链接: 2762. 不间断子数组 - 力扣(Leetcode)
题意: 给一个数组nums,求不间断子数组的数量。不间断子数组的定义是一段连续非空序列内最大值减最小值要小于等于2。
分析:第一次知道滑动窗口能这么写。挺神奇的。
typedef long long ll;
class Solution {
public:
long long continuousSubarrays(vector<int>& nums) {
ll ans = 0;
multiset<int> s;
int n = nums.size();
int l = 0;
for(int r = 0; r < n; r ++){
s.insert(nums[r]);
while(*s.rbegin() - *s.begin() > 2) s.erase(s.find(nums[l ++]));
ans += r - l + 1;
}
return ans;
}
};