如果i...j
的和是sum
,i...k
的和是sum+k
,那么j+1...k
的和就是k
了
int subarraySum(vector<int>& nums, int k) {
int sum=0,res=0;
unordered_map<int,int> map;
map[0]=1;
for(int num:nums){
sum += num;
res += map[sum-k];
++map[sum];
}
return res;
}