链接:https://leetcode-cn.com/problems/subarray-sum-equals-k/
创建一个map,key为数组部分和,value为此部分和出现的次数。遍历数组计算部分和,并在map中寻找
k
−
此
部
分
和
k-此部分和
k−此部分和
java代码:
class Solution {
public int subarraySum(int[] nums, int k) {
Map<Integer,Integer>map = new HashMap<>();
map.put(0,1);
int sum = 0;
int result = 0;
for(int i = 0;i<nums.length;i++)
{
sum+=nums[i];
if(map.containsKey(sum-k))
result+=map.get(sum-k);
map.put(sum,map.getOrDefault(sum,0)+1);
}
return result;
}
}