LeetCode-热题100:560. 和为 K 的子数组

题目描述

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。

子数组是数组中元素的连续非空序列。

示例 1:

输入: nums = [1,1,1], k = 2
输出: 2

示例 2:

输入: nums = [1,2,3], k = 3
输出: 2

提示:

  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -107 <= k <= 107

代码及注释

以下是加上注释的 subarraySum 函数代码:

func subarraySum(nums []int, k int) int {
    // 使用 map 存储前缀和及其出现的次数
    m := map[int]int{}
    // 初始化前缀和为 0,计数器为 0
    pre, count := 0, 0
    // 初始化,0 的前缀和出现 1 次
    m[0] = 1

    // 遍历数组 nums
    for _, val := range nums {
        // 计算当前的前缀和
        pre += val
        // 如果前缀和 (pre - k) 在 map 中存在,更新计数器
        if m[pre - k] > 0 {
            count += m[pre - k]
        }
        // 更新前缀和出现的次数
        m[pre]++
    }

    return count
}

代码解释:

  1. 使用 m 存储前缀和及其出现的次数。
  2. 初始化前缀和 pre 为 0,计数器 count 为 0。
  3. 初始化时,前缀和 0 出现 1 次。
  4. 遍历数组 nums,计算当前的前缀和 pre
  5. 如果 pre - km 中存在,更新计数器 count
  6. 更新前缀和 pre 出现的次数。

相关推荐

  1. LeetCode-100:560. K 数组

    2024-03-29 08:36:05       43 阅读
  2. 力扣100_串_560_ K 数组

    2024-03-29 08:36:05       53 阅读
  3. leetcodeK数组

    2024-03-29 08:36:05       55 阅读
  4. LeetCode记录】560. K 数组

    2024-03-29 08:36:05       35 阅读
  5. K数组LeetCode 560)

    2024-03-29 08:36:05       57 阅读
  6. leetcode560k数组

    2024-03-29 08:36:05       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 08:36:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 08:36:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 08:36:05       82 阅读
  4. Python语言-面向对象

    2024-03-29 08:36:05       91 阅读

热门阅读

  1. idea默认代码生成脚本修改

    2024-03-29 08:36:05       38 阅读
  2. LINUX交叉编译arm/aarch64简单脚本

    2024-03-29 08:36:05       44 阅读
  3. 服务器不能DELETE和PUT

    2024-03-29 08:36:05       48 阅读
  4. 监听页面的使用时间

    2024-03-29 08:36:05       33 阅读
  5. 每天学习一个Linux命令之shutdown

    2024-03-29 08:36:05       43 阅读
  6. Android 14.0 SystemUI下拉状态栏时间格式的修改(二)

    2024-03-29 08:36:05       40 阅读
  7. @rollup/plugin-html 使用及原理介绍

    2024-03-29 08:36:05       46 阅读