发布时间:2026/8/17 2:48:05
8.LeetCode算法习题讲解--滑动窗口--长度最小的子数组 一.题目习题链接209. 长度最小的子数组 - 力扣LeetCode二.题目讲解给定全正整数数组nums和正整数target找到连续子数组满足子数组和 ≥ target 要求找出满足条件的最短子数组长度不存在返回 0。⚠️关键点子数组 连续元素数组所有元素都是正数这是算法优化的核心前提三.算法原理讲解解法一暴力枚举首先我们想到的肯定是遍历所有子数组然后找到一个一个匹对找到最小的那个子数组长度。枚举所有子数组起点 i再从起点向后不断累加元素终点 j一旦区间和 ≥ target记录区间长度j-i1因为往后 j 更大长度只会更长内层循环可以直接 break。缺点时间复杂度 O(n^2)暴力会超时只能用来理解题意不能 AC。解法二利用单调性“同向双指针”来优化我们不是在讲滑动窗口怎么用双指针来解题了呢这里的双指针不是我们之前提到的双指针这里我们来分析一下1.单调性由于数组中存放的全是正整数所以每次加一个数都会变大单调递增的2.同向双指针两个指针朝同一个方向运动下面我们画图来分析定义两个指针开始时指向0然后让右指针不断向后面走将 [left , right]之间的区间看作一个窗口right向后面走的时候就相当于数据进窗口然后不断sum直到sumtarget停下来这时找到一个区间长度注意right后面的数就不用进窗口了因为进去之后的长度都要比现在的长我们找的是最小的那个区间长度这里就用到了单调性然后是让left就相当去出窗口right是重新指向left还是不动呢这里我们可以通过运动观察到如果指向图一走之后还会变到图二这种状态所以不需要让right指针回到left的位置这也是滑动窗口的由来同时这里也是前面讲的同向双指针这里注意出窗口前要更新len的长度然后让sum-left后继续判断sum和target的关系重复该操作结束条件right走向末尾四.编写代码这里需要注意几个点1.外层循环是让right一直向后面走直到走到末尾才结束内层循环是让left直到sumtarget才结束2.绿色框因为更新长度要取最小的这里如果给0就会一直是0所以给最大3.红色框是判断条件为什么是等号因为是循环是先判断再更新长度最后才会出窗口所以当sumtarget的时候还要更新长度然后后面sum会小于target但是他不会进入循环len也就不会变4.蓝色框这里是判断len长度是否变化变化了说明进入了循环说明sumtarget返回len没变化说明没有进入循环sumtarget没有满足条件的子数组然后就返回0class Solution { public: int minSubArrayLen(int target, vectorint nums) { int left 0, sum 0,len INT_MAX; for(int right 0; right nums.size();right) { sum nums[right]; // 进窗口 while(sum target) { //更新长度 len min(len,right - left 1); sum - nums[left]; left; } } return len INT_MAX ? 0 : len; } };

相关新闻

2026/8/17 2:43:04

python列表学习笔记

目录简述添加元素删除元素排序反转列表推导式遍历简述 是一个容器 是一个可变的集合,是一个元素有序、可重复的序列 添加元素 append在末尾添加新元素 lst [1,2,3] lst.append(4)insert 在指定索引处添加数据 lst [1,2,3] lst.insert(0,0)删除元素…

2026/8/17 2:43:04

Python面向对象编程:从封装、继承到多态的实战进阶指南

1. 项目概述:为什么面向对象是Python进阶的必经之路如果你已经能熟练地用Python写一些脚本,处理数据,或者用几个循环和判断语句完成一些小任务,那么恭喜你,你已经迈出了第一步。但很快你会发现,当项目稍微复…

2026/8/17 3:53:08

MySQL索引维护实战:DROP INDEX操作原理、场景与避坑指南

1. 索引维护:不止于创建,更在于“保养”在数据库的世界里,给表加上索引,就像是给一本厚厚的书加上目录,能极大提升查询效率。这个道理,无论是刚入门的新手,还是经验丰富的老DBA,都深…

2026/8/17 3:53:08

双扩展卡尔曼滤波器在时变MVAR模型参数估计中的应用

1. 项目背景与核心价值时变多变量自回归(MVAR)模型参数估计是神经科学、金融时间序列分析等领域的关键技术。传统最小二乘法在非平稳信号处理中存在明显局限,而双扩展卡尔曼滤波器(Dual Extended Kalman Filter)通过状态-参数联合估计,为时变系统建模提供…

2026/8/17 3:53:08

Android APK打包桌面应用实战:从移动端到Windows/macOS的完整方案

1. 项目概述:从移动端到桌面端的“跨界”之旅最近几年,一个需求在开发者社区里越来越常见:如何把手头那个已经开发好的移动端App,变成一个能独立运行在Windows或macOS上的桌面程序?这个需求背后,其实反映了…

2026/8/17 3:53:08

IEEE论文LaTeX定理环境全解析:从基础使用到高级技巧

1. 从“夹逼定理”到“主定理”:为什么LaTeX定理环境是科研写作的刚需最近在几个学术群里,看到不少朋友在讨论“夹逼定理”的证明,或者“主定理”在算法分析中的应用。这些讨论本身很有意思,但当我看到他们分享的文档截图时&#…

2026/8/17 3:48:08

高性能TCP服务器设计与优化实战指南

1. 高性能TCP服务器设计概述在当今互联网应用中,TCP服务器作为基础通信设施,其性能直接影响着整个系统的吞吐量和响应速度。一个设计良好的TCP服务器需要同时处理数万甚至数十万的并发连接,这对IO处理、线程模型和内存管理都提出了极高要求。…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/17 0:02:57

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

2026/8/17 0:02:57

飞书局域网文件传输实战:3种方案实现高速点对点传输

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/16 16:53:03

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…