题目浅析

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

  • 简单地说,就是给一个整数数组,并找出其中所有子数组的数目,子数组的要求为其中任意两元素之差不大于 2.

思路分享

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

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
long long continuousSubarrays(vector<int>& nums) {
map<int, int> rec;
int left = 0;
long long ans = 0;
for (int right = 0; right < nums.size(); right++) {
rec[nums[right]]++;
while(!rec.empty() && rec.rbegin()->first-rec.begin()->first > 2) {
int index = nums[left++];
rec[index]--;
if (rec[index] == 0) {
rec.erase(index);
}
}
ans += right-left+1;
}
return ans;
}
};