数组中的子数组之和问题
程序员文章站
2022-03-24 17:38:02
...
560. Subarray Sum Equals K
思路:可以这样考虑,对于求a[i] - a[j]的连续和,可以转化为a[0]-a[j]和a[0]-a[i]的问题,而后者可以在一次遍历时完成,用hashmap存出现相同得数的次数。
class Solution {
public int subarraySum(int[] nums, int k) {
int sum = 0;int count = 0;
HashMap<Integer,Integer> map = new HashMap<>();
map.put(0,1);
for(int i = 0;i<nums.length;i++){
sum+=nums[i];
if(map.containsKey(sum-k)){
count+= map.get(sum-k);
}
map.put(sum,map.getOrDefault(sum,0)+1);
}
return count;
}
}
下一篇: spark知识点总结