目录
一:题目
二:算法原理
三:代码实现
class Solution {
public:
int totalFruit(vector<int>& fruits)
{
int cont = 0;
int ret = 0;
vector<int> hash;
hash.resize(fruits.size());
for (int right = 0, left = 0; right < fruits.size(); right++)
{
//进窗口
if (hash[fruits[right]] == 0)
{
cont++;
}
hash[fruits[right]]++;
while (cont > 2)//判断
{
//出窗口
hash[fruits[left]]--;
if (hash[fruits[left]] == 0)
cont--;
left++;
}
//更新结果
ret = max(ret, right - left+1);
}
return ret;
}
};