++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;
    }
};
posted @ 2026-03-11 17:04  Time_q  阅读(2)  评论(0)    收藏  举报