0%

滑动窗口904. 水果成篮

904. 水果成篮

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
int totalFruit(vector<int>& fruits) {
int left=0,right=0;
int n=fruits.size();
int max_fruit=INT_MIN;
unordered_map<int,int> basket; //这个什么map不懂
for(int i = 0 ; i<n;i++){ //大循环 从0-n-1
int fruit_num= fruits[i]; // 记录fruits[i]的数字,当比如fruits[0]=1,fruits[1]=1,那么,basket[1]=1+1=2
basket[fruit_num]++;
while(basket.size()>2){//当篮里种类大于2时
int fruit_num=fruits[left];//记录从fruits[0]=1即basket[1]=2
basket[fruit_num]--; //把前面的减掉
if(basket[fruit_num]==0){
basket.erase(fruit_num); //当这种水果为0的时候,就删除这种水果 //删除key就行了
}
left++; //继续从当前的位置往右边移动
}
max_fruit=max_fruit>i-left+1?max_fruit:i-left+1;
}
return max_fruit;
}
};
-------------本文结束感谢您的阅读-------------
老板你好,讨口饭吃