滑动窗口:
- 当窗口内的水果种类小于等于二时,移动窗口右边界
- 当窗口内的水果种类大于二时,将窗口左边界的水果值减一,直到窗口内水果数小于等于二
class Solution
{
public:
int totalFruit(vector<int> &fruits)
{
int result = 0;
unordered_map<int,int> mp;
int i = 0;
for(int j = 0; j < fruits.size(); j++){
mp[fruits[j]]++;
while(mp.size() > 2){
mp[fruits[i]]--;
if(mp[fruits[i]] == 0){
mp.erase(fruits[i]);
}
i++;
}
result = j - i + 1 > result? j - i + 1 : result;
}
return result;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)