560. 和为 K 的子数组

package leetcode;

import java.util.HashMap;

public class demo_560 {
    public int subarraySum(int[] nums, int k) {
        int count=0;
        int preSum=0;
        //记录当前preSum出现了几次
        HashMap<Integer, Integer> map=new HashMap<Integer, Integer>();
        //还未开始,所以和为0出现了1次
        map.put(0, 1);
        for(int i=0;i<nums.length;i++) {
            preSum=preSum+nums[i];
            //和为K的个数,就是所有可能为preSum-k的个数
            if(map.containsKey(preSum-k)) {
                count=count+map.get(preSum-k);
            }
            map.put(preSum,map.getOrDefault(preSum, 0)+1);
        }
        return count;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_560 demo=new demo_560();
        int[] nums= {1,2,3};
        demo.subarraySum(nums,3);
    }

}

 

posted on 2022-04-14 16:07  一仟零一夜丶  阅读(26)  评论(0)    收藏  举报