力扣560.和为K的子数组
-
求前缀和 存入哈希表
- 遍历所有前缀和 加入哈希表之前先找前面值为 k - s[i]的数量
cpp
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int n = nums.size();
vector<int> s(n+1);
for(int i=0;i<n;i++) s[i+1] = s[i] + nums[i];
int res=0;
unordered_map<int,int> cnt;
for(int sj:s)
{
res += cnt[sj-k];
cnt[sj] ++;
}
return res;
}
};