码迷,mamicode.com
首页 > 编程语言 > 详细

LC_560-和为K的连续子数组

时间:2020-05-29 22:55:36      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:subarray   需要   sum   class   连续子数组   integer   给定一个整数数组   不同   java   

题目描述

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的连续子数组

标签:subarray   需要   sum   class   连续子数组   integer   给定一个整数数组   不同   java   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!