news 2026/8/15 12:24:48

【leetcode复健-8】560. 和为 K 的子数组-前缀和思想+哈希表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【leetcode复健-8】560. 和为 K 的子数组-前缀和思想+哈希表

560. 和为 K 的子数组 - 力扣(LeetCode)

给你一个整数数组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

坑点与要点

我们首先理清楚题目要求:
1. 找nums中连续子数组,和为k
2. 返回子数组个数

相信大多数人都会通过看示例来快速理解题目,但这题需要额外关注的是,示例所给出的数组都是有序的,而我们实际接收到的数组是无序的,一定不能被示例所误导
这题的正确题解很巧妙,使用前缀和的思想,将前缀和保存在一张哈希表中,此后我们只需要关注哈希表中有多少个的前缀之和与当前数组前缀之和的差能够等于k即可,如此这道题就转换成了与1. 两数之和 - 力扣(LeetCode)同类型的题目。

正确思路

两个前缀和之差确定一个数组。

使用一张哈希表 hash1 来记录当前所有前缀(键为数值前缀和,值对应的前缀和个数),cnt 记录满足和为 k 的子数组个数,变量 prefix (前缀和)从数组起始点开始不断累加,每次循环将当前的前缀和个数 +1 ,并计算 seen = k - prefix ,seen 代表当前前缀数组要到达 k 所需要的前缀和,在 hash1 中查询所需要的前缀和个数,将其累加到 cnt 中。
如此即可找出所有符合要求的子数组个数

代码如下

class Solution: def subarraySum(self, nums: List[int], k: int) -> int: hash1 = {} hash1[0] = 1 prefix = 0 seen = 0 cnt = 0 for i in nums: prefix += i seen = prefix - k if seen in hash1: cnt += hash1[seen] if prefix in hash1: hash1[prefix] += 1 else: hash1[prefix] = 1 return cnt

精华思路

以后遇到连续的字符串/数组这类题目,不仅可以考虑双指针,也可以考虑使用前缀和思想尝试等价替代

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 12:22:36

Ubuntu Ollama 搭建私有大模型部署 垂直投喂RAG

现阶段各大厂商免费模型已成熟&#xff0c;可以接入着手研究大模型应用。轮子都造好了我们就拿来用了。但是个人要对于大模型学习使用成本小高&#xff0c;那么我们先从基础走起。 PS&#xff1a;我用的是用户安装&#xff0c;这个会有坑安装用root用户能规避一些问题。 一、…

作者头像 李华
网站建设 2026/8/15 12:17:32

【leetcode复健-9】239. 滑动窗口最大值-滑动窗口-队列

239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#…

作者头像 李华
网站建设 2026/8/15 12:13:34

Windows任务栏透明化神器TranslucentTB:从零到一打造沉浸式桌面

Windows任务栏透明化神器TranslucentTB&#xff1a;从零到一打造沉浸式桌面 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 每天对着屏幕…

作者头像 李华
网站建设 2026/8/15 12:11:56

抖音批量下载实战:一个晚上,我收下了整个博主的主页

抖音批量下载实战&#xff1a;一个晚上&#xff0c;我收下了整个博主的主页 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…

作者头像 李华
网站建设 2026/8/15 12:11:45

2010-2025年工业互联网试点示范项目企业数据

工业互联网试点示范项目企业数据&#xff08;2010-2025&#xff09;&#xff1a;可直接用于 DID 因果推断的 A 股制造业面板 做政策实证研究&#xff0c;最耗时的往往不是回归本身&#xff0c;而是把政策文件转换成可用的面板变量。这份整理好的数据集恰好解决了这一步&#x…

作者头像 李华