class Solution {
public int subarraySum(int[] nums, int k) {
//前缀和
Map<Integer, Integer> map = new HashMap<>();
map.put(0, 1);//map保存前i项和的值以及出现的次数
int ans = 0, pre = 0;
for(int i = 0;i < nums.length;i++){
pre += nums[i];
if(map.containsKey(pre-k)){
ans += map.get(pre-k);
}
map.put(pre, map.getOrDefault(pre, 0)+1);
}
return ans;
//暴力法
// int n = nums.length, ans = 0;
// for(int start = 0;start < n;start++){
// int sum = 0;
// for(int end = start;end < n;end++){
// sum += nums[end];
// if(sum == k)
// ans++;
// }
// }
// return ans;
}
}
01-29
284
03-01
153
05-27
1312
09-11
320