class Solution {
public:
int maxDistance(vector<int>& colors) {
int i = 0;
int j = 0;
int res = 0;
for (i = 0; i<colors.size(); i++)
{
for (j = i + 1; j<colors.size(); j++)//双循环可以起到一个变量不动,另一个变量改变的效果。
{
if (colors[i] != colors[j])
{
res = max(j - i, res);
}
}
}
return res;
}
};
下面是没看清题目写错的版本。中间是不允许有不同变量的。
//中间不允许有不同的颜色。
class Solution {
public:
int maxDistance(vector<int>& colors) {
int i = 0;
int j = 0;
int res = 0;
for (i = 0; i<colors.size(); i++)
{
for (j = i + 1; j<colors.size(); j++)
{
if (colors[i] != colors[j])//
{
res = max(j - i, res);
break;//找到第一个就出来,不再更新res的值。
}
}
i = j;//因为最长的距离已经不可能出现在i到j中间开始的元素了。i到j之间都是相同的元素。
}
return res;
}
};