也是滑动窗口的应用,但用到了哈希表。
哈希表一个索引,一个真值。索引可以是任何符号,因此可以表示一个事物的数量关系和对应关系.删除某个索引及真值时,要用迭代器,erase(it)。
find是查找索引返回迭代器。
点击查看代码
class Solution {
public:
int totalFruit(vector<int>& fruits) {
int n=fruits.size();
unordered_map<int,int>cnt;
int result=0;
int left=0;
for(int right=0;right<n;++right){
++cnt[fruits[right]];
while(cnt.size()>2){
auto it=cnt.find(fruits[left]);
--it->second;
if(it->second==0){cnt.erase(it);}
++left;
}
result=max(result,right-left+1);
}
return result;
}
};