废话不多说,采用滑动窗口的方法,直接上代码
class Solution {
public:
int totalFruit(vector<int>& fruits) {
//使用滑动窗口来解决
unordered_map<int,int> basket; //第一个int是fruit种类,第二个int是数量
int result = INT32_MIN;
int i = 0; //表示开始指针
for(int j = 0;j < fruits.size() ; j++){ //j表示结束指针
int type = fruits[j];
basket[type]++;
while(basket.size() > 2){
basket[fruits[i]]--;
if(basket[fruits[i]] == 0){
basket.erase(fruits[i]);
}
i++;
}
result = max(result,j-i+1);
}
return result;
}
};