Minimum Size Subarray Sum:从 O(n²) 暴力到 O(n) 滑动窗口,我只改了 4 行

发布时间:2026/11/12 16:19:11

Minimum Size Subarray Sum:从 O(n²) 暴力到 O(n) 滑动窗口,我只改了 4 行 读完本文你将了解滑动窗口的本质不是一行模板而是对「最优子结构」的直觉 | AI 是怎么一步步从暴力解里挖出滑动窗口的 | 这道题在 Uber 动态定价系统里的真实映射 题目原题给定一个正整数数组nums和一个正整数target求出数组中和至少为 target 的最短连续子数组的长度。如果不存在这样的子数组返回 0。项目说明输入target 7, nums [2,3,1,2,4,3]输出2约束1 ≤ target ≤ 10⁹1 ≤ nums.length ≤ 10⁵1 ≤ nums[i] ≤ 10⁵最优解是 [4,3]长度 2。 先问一个问题如果让 ChatGPT 第一眼看这道题它会怎么写它几乎必然会先用双重循环暴力遍历。这不是 AI 笨——暴力解对应的是人类的直觉枚举所有连续子数组算和选最短的。AI 的弱点也是人类的弱点直觉往往是慢解法。但 AI 有个好处它会把每一步推理都摊开来。你能看到它从哪一步开始怀疑暴力解不够好然后怎么找到更优方案。 第一版暴力解直觉的代价最朴素的想法两层循环枚举所有连续子数组defminSubArrayLen_brute(target,nums):nlen(nums)ansn1foriinrange(n):total0forjinrange(i,n):totalnums[j]iftotaltarget:ansmin(ans,j-i1)breakreturnansifansnelse0时间复杂度 O(n²)空间 O(1)。AI 的直觉没错。但它枚举完 [2,3,1,2] 之后下一轮从 [3,1,2,4] 开始——中间有大量重复计算。nums[1]nums[2]nums[3] 这个和第一轮算过第二轮又在算。它会什么时候意识到这个问题通常是在它自己测试一个长度为 10⁵ 的数组然后卡住的时候。暴力枚举O(n²)发现重复计算subarray sum 被反复加能不能复用右指针往右走时,左指针也右移?滑动窗口O(n) 滑动窗口让指针「滑」起来核心直觉就一句话数组全是正数右指针右移让和变大左指针右移让和变小。我们只需要找到「刚好 ≥ target」的那个时刻。算法流程右指针r向右滑累加total一旦total ≥ target尝试把左指针l往右移缩小窗口同时更新最短长度重复直到r走到头defminSubArrayLen(target,nums):ltotal0anslen(nums)1forrinrange(len(nums)):totalnums[r]whiletotal-nums[l]target:total-nums[l]l1iftotaltarget:ansmin(ans,r-l1)returnansifanslen(nums)else0为什么是 O(n)左指针l和右指针r都只向右移动每个元素最多被访问两次一次r加进来一次l移出去。没有回头没有重复计算。窗口的「呼吸」节奏渲染错误:Mermaid 渲染失败: Parse error on line 7: ...U V --|否|r继续右移| R U -- W[更新最 ----------------------^ Expecting SEMI, NEWLINE, SPACE, EOF, SQS, SHAPE_DATA, AMP, STYLE_SEPARATOR, DOUBLECIRCLESTART, PS, (-, STADIUMSTART, SUBROUTINESTART, VERTEX_WITH_PROPS_START, COLON, CYLINDERSTART, DIAMOND_START, TAGEND, TRAPSTART, INVTRAPSTART, START_LINK, LINK, LINK_ID, DOWN, DEFAULT, NUM, COMMA, NODE_STRING, BRKT, MINUS, MULT, UNICODE_TEXT, got PIPE☕ Java 实现CSDN 用户里 Java 开发者最多同样的思路Java 版本publicintminSubArrayLen(inttarget,int[]nums){intl0,total0,ansnums.length1;for(intr0;rnums.length;r){totalnums[r];while(total-nums[l]target){total-nums[l];l;}if(totaltarget){ansMath.min(ans,r-l1);}}returnansnums.length?ans:0;}Python 和 Java 的唯一区别是 Java 没有 break逻辑完全一致。 滑动窗口模式拆解什么时候用滑动窗口三个条件同时满足条件说明本题是否满足数据是数组/链表连续的结构✅需要找连续子序列不是任意子集✅子序列的性质是单调的加元素让某个值变大删元素让某个值变小✅如果三个条件都满足滑动窗口大概率能用。如果第三条不满足比如要找和等于某个值且数组有负数那就不是滑动窗口的问题了。同类题LeetCode 3无重复字符的最长字符串滑动窗口 哈希表LeetCode 76最小覆盖子串LeetCode 340至多包含 K 个不同字符的最长子串️ 真实产品场景Uber 动态定价中的时间窗口这道题在 Uber 的定价系统里有直接的映射。Uber 的时间窗口定价问题每个 5 分钟时间片都有供需数据。当某个时段的供需比达到阈值系统要找出满足该阈值的最短连续时间区间。这和minSubArrayLen完全一致正整数数组 供需比数据target 定价阈值最短连续子数组 最短需要进入动态定价的时间区间。Uber 2016 年的论文明确提到了用滑动窗口做时间序列的局部统计。这道题不是抽象的脑筋急转弯——它是 Uber 面试里用来验证候选人能不能把产品问题翻译成算法问题的经典题。✅ 面试官的点评写到什么程度算通过通过线能写出来 O(n) 的滑动窗口实现加分项能说出为什么双指针不会漏解因为左指针只向右不会跳过解能处理全 0 或者全小于 target 的边界情况能指出 nums 包含负数时滑动窗口不再适用常见踩坑while循环的条件写反写成total target而不是total - nums[l] targetans的初始值设成 0然后漏了无解的情况窗口缩小时没更新total 同类题推荐题目难度一句话思路LC 3 无重复字符的最长字符串Medium滑动窗口 哈希表记录字符位置LC 76 最小覆盖子串Hard滑动窗口 频次计数LC 340 至多 K 个不同字符Medium滑动窗口 哈希表计数来源说明✅ 已验证LeetCode 官方题解 本地 Python/Java 双语言实测 文档/论文Uber Dynamic Pricing 论文 (2016)
延伸阅读

更多相关文章

2026/11/8 21:37:38

LangChain 1.3.x实战:从RAG系统构建到多智能体工作流开发

当前B站最全最细的 LangchainV1.3 应用开发全套教程!从LangChain构建RAG应用到LangGraph构建多智能体工作流!少走99%的弯路! 最近在AI应用开发领域,LangChain无疑是最热门的技术框架之一。但很多开发者在学习过程中都会遇到各种问…

2026/11/12 7:20:38

新手入门记单词避坑技巧:8个步骤从零到高效记忆,告别死记硬背

“记单词不是靠蛮力,找对8个步骤就能让词汇量稳步提升。”本文专为英语学习新手设计,围绕“新手入门记单词避坑技巧”这一核心,提供一套从准备到掌握的全流程实操指南。无论你是K12阶段的学生,还是刚起步的成人学习者,…

2026/11/11 14:18:41

国风动漫mv爆款视频制作

首先打开豆包,输入以下提示词,可自行改成自己的:你是一名现代二次元动漫mv短视频创作者, 根据《风若是拦不住》歌词: 我曾经迎着风当成我的梦 可茫茫尘世中人与人不同 有些感情注定是一程 后来我背着风不为谁心痛 任风…

2026/11/12 16:16:50

验电工证需要多少钱全国通用 考不过真的白交钱

验电工证需要多少钱全国通用 考不过真的白交钱 怕考不过白交培训费?验电工证需要多少钱全国通用,很多人一上来就被培训费劝退了,其实你要是能搞清楚流程,搞明白考试要点,花的钱都是值的。 一、验电工证的报考门槛与费用解析…

2026/11/12 16:16:50

柳州电工证考试流程多久拿证?实操考试心里没底怕挂科

柳州电工证考试流程多久拿证?实操考试心里没底怕挂科 你不是一个人在战斗,柳州电工证考试流程对很多人来说确实有点“吓人”,尤其是实操考试,一不小心就容易挂科,导致时间和金钱都打水漂。别担心,今天咱们就来聊聊【柳州电工证考试流程】,并带你搞懂多…

2026/11/12 16:16:50

武汉特种工报考避坑指南:通过率揭秘

武汉特种工报考避坑指南:通过率揭秘 你是不是也遇到过这种情况?明明是正规的特种作业,却不知道去哪报名,怕被中介骗钱,怕材料不全耽误事,甚至担心考试不过影响工作?特别是在武汉,特种工证的办理流程复杂、政策变化快,很多人一头雾水。今天,就从三门…

2026/11/12 16:11:48

本溪特种作业操作证全国通用考哪个证适合工地人

本溪特种作业操作证全国通用考哪个证适合工地人 工地太忙根本没时间复习考试,这话说得再实在不过。尤其在本溪这样的工业城市,特种作业操作证的考试和复审成了不少从业者绕不开的坎。很多人心里打着鼓, 本溪特种作业操作证…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑