题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是一个整形数组,求最长连续子串,且其中数字种类不超过2.

思路分享

代码解答(强烈建议自行解答后再看)

  • 陆爻齐的解法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
int totalFruit(vector<int>& fruits) {
unordered_map<int, int> count_fruit;
int ans = 0;
int left = 0;
int n = fruits.size();
for (int i = 0; i < n; i++) {
int index = fruits[i];
count_fruit[index]++;
while(count_fruit.size()>2) {
count_fruit[fruits[left]]--;
if (count_fruit[fruits[left]]==0) {
count_fruit.erase(fruits[left]);
}
left++;
}
ans = max(ans, i-left+1);
}
return ans;
}
};