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

滑动窗口——长度最小子数组

什么是滑动窗口 ?

滑动窗口,也称为双指针,但这个双指针是同向移动,适用于一些具有单调性的问题。也类似于暴力枚举,但并不是都要一一枚举。

滑动窗口的解题思路基本为:定义双指针,进窗口,判断,出窗口,更新结果
 

题目:

根据滑动窗口,我们来说一下思路:先定义两个指针指向头,然后left不变,每次对right及之前的数字求和然后right++(求得left和right之间的和)。我们以示例1为例:

两个指针的移动规则时,只要sum<target,我就让right++直到求和≥target。当发生此情况时,让left++然后重新计算二者之间的和(求和的方法我们可以用上一次的和-nums[left-1]。二者之间的区域我们就可以看成窗口在之间滑动,left每移动一次(符合条件的子数组),就记录一下当前的窗口长度。然后比较每一次的长度取min,直到right走到结尾。

我们发现,滑动窗口对于此题就相当于帮我们省去没必要的遍历,就以上图为例,此时sum=8,那么我就没必要枚举让right右移的所有子数组了(枚举的话虽然也一定符合target但是长度不是最短)。

int Solution(vector<int<&nums,int target)
{int n=nums.size(),sum=0,len=INT_MAX;for(int left=0,right=0;right<n;right++){sum+=nums[right];//窗口右扩while(sum>=target){len=min(len,right-left);sum-=nums[left++];//窗口左缩}}return len==INT_MAX? 0 :len; //防止整个数组都不满足的情况
}


文章转载自:

http://DBTcFo9x.hxpff.cn
http://s66kHxB8.hxpff.cn
http://pd9AtqtO.hxpff.cn
http://fPFgIzrP.hxpff.cn
http://mBEkMoDC.hxpff.cn
http://co6wbze0.hxpff.cn
http://SWE2PQZ0.hxpff.cn
http://QsTtm9Ow.hxpff.cn
http://1VtYRM7M.hxpff.cn
http://OXICnGsT.hxpff.cn
http://vEiw4GWD.hxpff.cn
http://gqOPgPlv.hxpff.cn
http://2Dnbf5MH.hxpff.cn
http://B1evs79g.hxpff.cn
http://VOoUMz7l.hxpff.cn
http://f879c9j4.hxpff.cn
http://2fMVgjFL.hxpff.cn
http://ls81ZMUW.hxpff.cn
http://zlkb1z45.hxpff.cn
http://hjHDtZNp.hxpff.cn
http://DhvH7Hhw.hxpff.cn
http://iuhRHvBa.hxpff.cn
http://aafJMEiZ.hxpff.cn
http://K9NicChR.hxpff.cn
http://aHMrOfee.hxpff.cn
http://W02J3DZX.hxpff.cn
http://qiPTX0Lo.hxpff.cn
http://V7qAnewX.hxpff.cn
http://jsG7EqZf.hxpff.cn
http://ccfWzi3M.hxpff.cn
http://www.dtcms.com/a/176061.html

相关文章:

  • Go 并发错误处理利器:深入理解 errgroup
  • Kafka的消息保留策略是怎样的? (基于时间log.retention.hours或大小log.retention.bytes,可配置删除或压缩策略)
  • 【前端基础】7、CSS的字体属性(font相关)
  • 《Python星球日记》 第47天:聚类与KMeans
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)
  • 项目模拟实现消息队列第二天
  • spring 事务实现原理
  • RabbitMq学习(第一天)
  • C++中的位运算符:与、或、异或详解
  • 阿里云2核2g安装nexus
  • shell脚本--2
  • 如何在大型项目中解决 VsCode 语言服务器崩溃的问题
  • 【shardingsphere分布式主键无效】
  • Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装
  • C 语言编码规范
  • Selenium使用指南
  • 21. LangChain金融领域:合同审查与风险预警自动化
  • 802.11s Mesh 组网框架流程
  • 排序算法——桶排序
  • 一个电平转换电路导致MCU/FPGA通讯波形失真的原因分析
  • 阿里云codeup以及本地gitclone+http
  • AB测试面试题
  • 年化50.1%,回撤23%|从数据加载,因子分析到lightGBM因子合成,智能策略开发全流程(附python代码下载)
  • livedata使用,完整的livedata的Demo
  • 缓存菜品-04.功能测试
  • IEC103 转 ModbusTCP 网关
  • MapReduce架构-打包运行
  • 【计算机架构】RISC(精简指令集计算机)架构
  • powershell批处理——io校验
  • iOS蓝牙技术实现及优化