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;
}
};

浙公网安备 33010602011771号