首页 > 编程语言 > 详细

LC_560-和为K的连续子数组

时间:2020-05-29 22:57:37      阅读:43      评论:0      收藏:0      [点我收藏+]

题目描述

Created by Edwin Xu on 5/15/2020 11:35 PM
给定一个整数数组和一个整数?k,你需要找到该数组中和为?k?的
连续的子数组的个数。
示例 1 :
输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。

前缀和+哈希表

    public int subarraySum(int[] nums, int k) {
        int cnt = 0;//计数
        //初始化数组
        Map<Integer,Integer> map = new HashMap<>();
        map.put(0,1);
        int sum = 0;
        for (int i = 0; i <nums.length; i++) {
            sum+=nums[i];
            cnt+=map.getOrDefault(sum-k,0);
            map.put(sum,map.getOrDefault(sum,0)+1);
        }
        return cnt;
    }

LC_560-和为K的连续子数组

原文:https://www.cnblogs.com/XT-xutao/p/12989869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!