给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int cnt=0;
unordered_map<int,int>mp;
mp[0]=1;//key为前缀和减去k,为0默认存在一组
int sum=0,res=0;
for(int i=0;i<nums.size();i++){
sum+=nums[i];//计算前缀和
if(mp.count(sum-k))res+=mp[sum-k];
mp[sum]++;
}
return res;
}
};