l用于保存左边那个数第一次出现的位置, r用于保存右边的数第一次出现的位置。当出现第三个数fruits[i]
出现时,r
保存i
,l保存数fruits[i - 1]
连续第一次出现的位置
class Solution {
public:
int totalFruit(vector<int>& fruits) {
int l = 0, r = 1;
while(r < fruits.size() && fruits[r] == fruits[l])
r++;
if(r == fruits.size())
return r;
int max = 0;
int count = 0;
count = r - l + 1;
for(int i = r + 1; i < fruits.size(); i++)
{
if(fruits[i] != fruits[l] && fruits[i] != fruits[r])
{
if (count > max)
max = count;
r = i;
l = r - 1;
while (l > 0 && fruits[l - 1] == fruits[l])
l--;
count = r - l;
}
count++;
}
if(count > max)
max = count;
return max;
}
};