尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LeetCode hot 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不知道为什么做了滑动窗口和双指针以后总想用left and right来做很多题目但在第一版本敲代码的时候就知道这里不适合用了。首先是数组是无序的左移和右移并不能完全的对应减和加所以带来的衍生点是比如说现在找到了一个合适的子数组我的Left和 right 要怎么更新我完全没有头绪然后我想到了差分。也是当时练习csp的入门算法。和GPT对了一下思路除了差分还有一个东西叫前缀和算是差分的进阶版太久没用了已经不是我的第一反应了....也就是前n个数字的和是多少假设定义prefix[i] nums 前 i 个数字之和那么从下标left到right的子数组和可以表示成prefix[right 1] - prefix[left]题目要求它等于kprefix[right 1] - prefix[left] k把这个式子移动一下prefix[left] prefix[right 1] - k现在先别急着写代码只思考当我从左向右计算到一个新的前缀和current时我需要在之前出现过的前缀和里寻找什么值前缀和为current - k的再进一步思考题目问的是子数组的“个数”如果要找的那个前缀和值在前面出现了多次意味着什么尝试手算nums [1, -1, 1] k 1它的前缀和记得最开始还有一个“尚未选择任何数字”的前缀和0是0, 1, 0, 1当你走到最后一个前缀和1时需要寻找1 - k 0此前0出现了不止一次。每一个此前出现的0都对应一个以当前位置结尾、和为1的子数组。因此你下一步只需要回答两个问题如何一边遍历一边记录此前每个前缀和出现了多少次如何快速查询当前前缀和 - k此前出现了多少次想清楚这两点就不再需要控制left和right了。这里的思维转换是不要直接维护一个窗口而是把每个可能的左边界压缩成“此前出现过的前缀和统计”。最后的代码如下class Solution: def subarraySum(self, nums: List[int], k: int) - int: # 构造前缀和 prefix_cnt {0: 1} 这个也算是看了GPT给的答案以后受到的大启发我给的一个注释和思维解释是 这道题目需要前缀和但为什么不使用常规的前缀和数组呢 - 因为我最后需要统计的是res_count也就是我需要统计的是个数 我知道了当前的前缀和为current, 我需要找的值是current - k,我需要统计的东西是current - k 出现了多少次所以这里用的是一个dict的形式可以更快的知道某个前缀和已经出现的次数. - 为什么要初始化一个0 : 1确保nums[0]也可以被划入. 比如当前current k那么就是nums[0:index 1]可以计入一次但是如果没有0这个答案不会被计入。 res 0 prefix_sum 0 #记录前缀和 for num in nums: prefix_sum num res prefix_cnt.get(prefix_sum - k, 0) dict.get(key, default) 表示 - 如果字典中存在 key返回对应的值。 - 如果不存在返回 default。 prefix_cnt[prefix_sum] ( prefix_cnt.get(prefix_sum, 0) 1 ) return res总结一下感觉GPT启发的核心是先找准算法结构用什么。双指针还是我想到的差分及其进阶版的前缀和从答案反推数据结构数据结构是统计上面的优化什么样的数据结构载体可以更快的得到答案比如这里如果用前缀和数组的话每遇到一个前缀和就要去统计current - k的出现次数时间开销肯定会加大的
RELATED

相关推荐

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音

零代码有声书制作:用ebook2audiobook轻松实现电子书转语音 【免费下载链接】ebook2audiobook Generate audiobooks from e-books, voice cloning & 1158 languages! 项目地址: https://gitcode.com/GitHub_Trending/eb/ebook2audiobook 还在为制作有声书…

📅 2026/9/4 16:06:19
Glean部署教程:Docker Compose一键启动,轻松管理服务依赖

Glean部署教程:Docker Compose一键启动,轻松管理服务依赖

Glean部署教程:Docker Compose一键启动,轻松管理服务依赖 【免费下载链接】glean A self-hosted RSS reader and personal knowledge management tool. 项目地址: https://gitcode.com/gh_mirrors/glean8/glean Glean是一款自托管的RSS阅读器和个…

📅 2026/9/10 11:01:24
多‑Agent 电商推荐系统完整搭建教程(原理+架构+可运行代码+模块图解+部署)

多‑Agent 电商推荐系统完整搭建教程(原理+架构+可运行代码+模块图解+部署)

项目简介:利用多智能体 Multi‑Agent 分工,拆分用户画像 Agent、商品召回 Agent、排序 Agent、策略 Agent、对话 Agent,实现智能化电商商品推荐;基于 PythonLangChain 向量数据库,全套可复现代码、架构示意图说明、分…

📅 2026/9/6 5:26:54
MORE NEWS

更多资讯

📰

Agent训练场架构设计:日跑300万沙箱的评分与防作弊实践

1. 从标题拆解:一个“Agent 训练场”到底在解决什么问题“一天跑 300 万个沙箱”这个数字第一次看到的时候,我下意识算了一笔账:一天 86400 秒,300 万个沙箱意味着平均每秒要拉起并跑完大约 35 个隔离环境。这不是“跑个 demo”的…

📰

AI 伦理与安全

AI 伦理与安全你可能觉得伦理是个很抽象的词,离日常生活很远。但想想这些场景:招聘时用 AI 筛选简历,结果它把所有女性求职者都淘汰了——不是因为它有偏见,而是因为训练数据里历史上的成功者多为男性。有人把公司的商业机密输入 …

📰

免费网页翻译插件,支持英文页面双语对照阅读

WoDeTool 1.3.0:新增网页翻译,英文页面双语对照阅读 翻译后保留原文,滚动自动续译,随时可还原。 更新日期:2026 年 9 月 25 日 安装地址:在线安装 一句话说明 WoDeTool 1.3.0 新增 网页翻译(英…

📰

秋日晨拍新诗——颗颗新绿肺晶莹,吐纳蕴育气真香

《景观榕》〖自创文体:『双“绝”联排』,分绝合排。😋🤗〗作者:当代梦幻精灵_cq独树成林小叶榕 ​玉冠塔云翠印光 气根板墙筑根基 城市景观傲风霜颗颗新绿肺晶莹 吐纳蕴育气真香 座座工坊运转忙 维系充氧恒久刚炼字说明…

📰

DeepAgents+MCP+A2A+Skills:构建可编排可扩展的多智能体集群

最近的实践重点一直放在一件事上:把零散的 Agent 从“单个玩具”拼成“一组能干活的团队”。试了几套主流方案之后,我发现当前最值得跟进的一条技术路线,就是标题里这组词:DeepAgents、MCP、A2A、Skills。你可以把 DeepAgents 理解…

📰

新人的第一篇文章

我是一个长得像I人的I人,对于一个新手而言学好C语言是最想要达到的目标,至于为什么学编程自然是为了想要提升自己,提高自己的质量。对于我自己来说,我愿意投入很多时间和精力,如果时间允许我将保持每天1到2小时的时间&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬