LeetCode HOT100 - 和为 K 的子数组

就是前缀和的思路

是否能组成和为 k 连续子序列就是看前缀和为 pre - k 的出现过多少次

也就是我们在枚举的是序列的右端点,找左端点

class Solution {
public:
    int subarraySum(vector<int>& a, int k) {
        unordered_map<int, int> mp;
        int pre = 0;
        mp[0] = 1;
        int n = a.size();
        int ans = 0;
        for (int i = 0; i < n; i++) {
            pre += a[i];
            ans += mp[pre - k];
            mp[pre]++;
        }
        return ans;
    }
};
posted @ 2026-04-16 22:59  rdcamelot  阅读(12)  评论(0)    收藏  举报