欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组中的子数组之和问题

程序员文章站 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;
    }
}