LC_560-和为K的连续子数组

Posted xt-xutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC_560-和为K的连续子数组相关的知识,希望对你有一定的参考价值。

题目描述

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的连续子数组的主要内容,如果未能解决你的问题,请参考以下文章

[M前缀和] lc560. 和为K的子数组(经典好题+哈希优化)

560. 和为 K 的子数组

560. 和为 K 的子数组

leetcode [560. 和为K的子数组]

leetcode [560. 和为K的子数组]

LeetCode-560. 和为 K 的子数组