++a a++的一些在滑动窗口中的用法
lc 2537. 统计好子数组的数目
code
class Solution {
public:
long long countGood(vector<int>& nums, int k) {
long long ans = 0;
unordered_map<int, int> cnt;
int pairs = 0, left = 0;
for (int x : nums) {
pairs += cnt[x]++;//cnt[x]++的时候,这个数字还没有加只有当有一个的时候+0,但是现在是1了,再有一个数字的时候,在+0的基础上+1,正好对应两个相同的数字对应一对
//当三个的时候,是+2,在+1的基础上+2,也就是3,正好对应的是三个相同字符的时候是三对
while (pairs >= k) {
pairs -= --cnt[nums[left]];//如果有四个相同的字符,当去掉一个的时候,就代表去掉了4-1对,因为除了本身之外,它可以和任何一个跟它一样的进行配对
left++;
}
ans += left;
}
return ans;
}
};

浙公网安备 33010602011771号