使用HashMap来储存前缀和、该前缀和出现的次数
如果一个前缀和数-k后仍是一个前缀和存在于hashmap中,那么久将对应的次数加到res中
并且对当前的这个前缀和数对应的次数+1
class Solution {
public int subarraySum(int[] nums, int k) {
int n = nums.length;
int[] sum = new int[n+1];
HashMap<Integer,Integer> preSum = new HashMap<>();
preSum.put(0,1);
int sum0_i = 0;
int res = 0;
for(int i = 0;i<n;i++){
sum0_i += nums[i];
if(preSum.containsKey(sum0_i-k)){
res += preSum.get(sum0_i-k);
}
preSum.put(sum0_i,preSum.getOrDefault(sum0_i,0)+1);
}
return res;
}
}