当前位置: 首页 > news >正文

刷题记录 HOT100 子串-1:560. 和为 K 的子数组

题目: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

一、模式识别

数组 and 连续子数组 and 求和 》 前缀和(子串)

前缀和:遍历数组并求和,记录所有出现过的求和(哈希表),

target == 从i到j的求和 = 从0到j的求和 - 从0到i的求和

则有:从0到i的求和 = 从0到j的求和 - target

所以程序只要实现每遍历到一个元素只需要从哈希表中找从0到j的求和 - target便可以实现功能

回归哈希表的本质:用空间换时间

二、代码实现

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        cache = defaultdict(int)
        cache[0] = 1
        sumAll = 0
        ans = 0
        for num in nums:
            sumAll += num
            if sumAll - k in cache:
                ans += cache[sumAll - k]
            cache[sumAll] += 1
        return ans

相关文章:

  • 前端关于Cursor编辑器的了解与深度使用及对工作的便利
  • c++之原始字符串字面量(raw string-literals)
  • AOP进阶-03.切入点表达式-execution
  • LeetCode 热题100 226. 翻转二叉树
  • 【智能优化算法】文献阅读总结
  • IDE/Mermaid + VSCode + Deepseek 生成可视化流程图和UML图
  • 认证与授权#1#Token和Cookie验证方式对比
  • 二、IDE集成DeepSeek保姆级教学(使用篇)
  • 【AIGC系列】3:Stable Diffusion模型介绍
  • 文件缓冲区
  • ABC 394
  • 使用git管理uniapp项目
  • 轮式机器人在复杂地形中如何选择合适的全局路径规划算法?
  • 为什么办公电脑需要使用企业级杀毒软件?--火绒企业版V2.0
  • 在 macOS 系统上安装 kubectl
  • maven:Maven插件开发实践:动态依赖注入与架构演进说明
  • 快速排序(详解)c++
  • 【Java分布式】基本概念
  • 《模拟器过检测教程:Nox、雷电、Mumu、逍遥模拟器 Magisk、LSposed 框架安装与隐藏应用配置》
  • 模拟与数字电路 寇戈 第三节课后习题
  • 落实中美经贸高层会谈重要共识,中方调整对美加征关税措施
  • Manus向全球用户开放注册
  • 最高降九成!特朗普签署降药价行政令落地存疑,多家跨国药企股价收涨
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩
  • 珠峰窗口期5月开启 普通人登一次有多烧钱?
  • 巴防空系统击落印度无人机,印称巴方违反停火协议