美文网首页程序员
力扣 560 和为K的子数组

力扣 560 和为K的子数组

作者: zhaojinhui | 来源:发表于2020-11-07 02:00 被阅读0次

题意:给定一个数组,找出所有和为k的子数组的个数

思路:

  1. 遍历数组,用hashmap记录所有之前出现过的值的和,以及它们出现的个数
  2. 每次查看map中是否有sum-k的key,如果有把它对应的出现个数加入结果
  3. 把<0,1>放入hashmap中,用来计算sum==k本身的情况

思想:hashmap

复杂度:时间O(n),空间O(n)

class Solution {
    public int subarraySum(int[] nums, int k) {
        HashMap<Integer, Integer> map = new HashMap();
        int sum = 0;
        map.put(0, 1);
        int res = 0;
        for(int i=0;i<nums.length;i++) {
            sum += nums[i];
            res += map.getOrDefault(sum - k, 0);
            map.put(sum, map.getOrDefault(sum, 0) + 1);
        }
        return res;
    }
}

相关文章

  • 那些小而美的算法技巧:前缀和/差分数组

    读完本文,你可以去力扣拿下如下题目: 560.和为K的子数组[https://leetcode-cn.com/pr...

  • 力扣 560 和为K的子数组

    题意:给定一个数组,找出所有和为k的子数组的个数 思路: 遍历数组,用hashmap记录所有之前出现过的值的和,以...

  • 力扣560——和为K的子数组

    这道题主要是找规律,优化的时候可以利用哈希表和数组的特性。 原题 给定一个整数数组和一个整数 k,你需要找到该数组...

  • LeetCode 560 和为k的子数组

    LeetCode 560 和为k的子数组 题目描述: 代码:

  • leetcode 560. 和为K的子数组

    560. 和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 ...

  • 前缀和

    560.和为K的子数组 算出一共有几个和为 k 的子数组。这里用到了前缀和数组。 注意以下几点: 前缀和数组第0号...

  • LeetCode 974. 和可被 K 整除的子数组 | Pyt

    974. 和可被 K 整除的子数组 题目来源:力扣(LeetCode)https://leetcode-cn.co...

  • 560. 和为K的子数组

    【Description】给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例...

  • 560.和为K的子数组

    和为K的子数组 题目 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1...

  • 560.和为K的子数组

    思路: 用sum[i]表示a[0]~a[i]的和,若sum[j]-sum[i]==k的话,则计数+1 注意: 若s...

网友评论

    本文标题:力扣 560 和为K的子数组

    本文链接:https://www.haomeiwen.com/subject/acvovktx.html