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

6.滑动窗口和双指针

文章目录双指针对撞指针快慢指针滑动窗口双指针双指针指的是在遍历对象的过程中不是普通的使用单个指针进行访问而是使用两个相同方向快慢指针或者相反方向对撞指针的指针进行扫描从而达到相应的目的。双指针法充分使用了数组有序这一特征从而在某些情况下能够简化一些运算。如二分查找就是使用的双指指针对撞指针对撞指针是指在有序数组中将指向最左侧的索引定义为左指针(left)最右侧的定义为右指针(right)然后从两头向中间进行数组遍历。案例一返回有序数组arr中查找 和为目标target的两个值的下标functionsum(arr,target){letleft0,rightarr.length-1;while(leftright){if(arr[left]arr[right]target){right--;}elseif(arr[left]arr[right]target){left;}elseif(arr[left]arr[right]target){return[left,right];}}}案例二:数组反转functionreverse(arr){letleft0,rightarr.length-1;while(leftright){[arr[left],arr[right]][arr[right],arr[left]];left;right--;}returnarr;}快慢指针快慢指针也是双指针但是两个指针从同一侧开始遍历数组将这两个指针分别定义为快指针fast和慢指针slow两个指针以不同的策略移动直到两个指针的值相等或其他特殊条件为止如fast每次增长两个slow每次增长一个。案例压缩字符串输入ddddaaayhuuaaa 输出d4a3y1h1u2a3functioncompressString(string){// j指针表示的是遍历字符串的指针i指针指向的是当前计数对应的字母指针letnewS,i0,j0;while(jstring.length-1){if(string[j]!string[j1]){newSstring[i](j-i1);ij1;}j;}newSstring[i](j-i1);returnnewS;}滑动窗口滑动窗口算法是一种解决数组或列表中子数组或子序列问题的有效方法。该算法通过定义一个窗口然后在数据结构上滑动该窗口逐步处理数据以解决特定类型的问题。其基本思想是维护一个窗口初始时窗口覆盖数组中的一部分元素然后通过滑动窗口来依次处理每个子数组。在每次窗口滑动时可以通过添加新元素和删除旧元素来更新窗口的内容以在O(1)时间内完成操作。滑动窗口实际上是双指针算法的一个延伸它特指双指针算法中的同向双指针。案例给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组[numsl,numsl1,...,numsr-1,numsr]并返回其长度。如果不存在符合条件的子数组返回0。 示例 输入target7,nums[2,3,1,2,4,3]输出2解释子数组[4,3]是该条件下的长度最小的子数组。题解/** * param {number} target * param {number[]} nums * return {number} */varminSubArrayLenfunction(target,nums){letleft0;letright0;letsum0;letminInfinity;while(rightnums.length){sumnums[right];if(sumtarget){while(sumtargetleftright){sum-nums[left];left;}// 这里2是因为while循环中多运行了一次minMath.min(min,right-left2);}right;}returnminInfinity?0:min;};
http://www.zskr.cn/news/1321173.html

相关文章:

  • 三步解锁九大网盘直链下载:告别限速烦恼的终极解决方案
  • Autoswagger与Intruder生态集成:企业级API安全解决方案的完整指南
  • 上海房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • 从Buck电路到正弦波逆变:一个公式讲透双Buck逆变器的工作原理(附模态图详解)
  • 赫嘉家居赫嘉木业常见问题解答(2026专家版) - 资讯速览
  • 茉莉花插件:终极Zotero中文文献管理解决方案
  • AM335X核心板开发指南:从硬件选型到Linux系统实战
  • 重庆惠民癫康医院:二十三年专注癫痫诊疗,让希望在家门口生长 - 深度智识库
  • RT-Thread线程栈初始化详解:从栈溢出到精准内存管理
  • 别再乱用add_definitions了!CMake现代项目用target_compile_definitions的正确姿势
  • PDF转换器,PDF转换成Word, pdf转换成word文件,如何将pdf转换成word格式,pdf转换成word免费版,pdf转word免费版下载,pdf转换成可编辑的word
  • 别再傻傻分不清!4脚和2脚的电感,在开关电源里到底怎么用?(附实物接线图)
  • MAA智能助手:5分钟掌握《明日方舟》全自动日常管理终极方案
  • 别再混淆了!用PyTorch代码带你彻底搞懂PointNet里的Shared MLP和普通MLP
  • 【Perplexity教育搜索实战指南】:3大隐藏功能+5个教师必用技巧,90%用户至今未发现
  • 2026最新 余姚市黄金回收白银回收铂金回收店铺实力排行榜TOP5;五家靠谱回收门店联系方式推荐_转自TXT - 盛世金银回收
  • 本地大模型部署的Python“翻译官“:llama-cpp-python深度解析
  • 2026京东淘宝天猫618红包领取口令最新清单淘宝京东天猫618口令怎么领取618天猫京东红包? - 资讯速览
  • iTop开源ITSM平台架构深度解析:面向对象CMDB与模块化服务管理
  • 《Windows Sysinternals实战指南》3.3 Process Explorer进阶:深入理解进程详情
  • SpikingJelly卷积SNN识别Fashion-MNIST:完整实现教程
  • C#上位机实战:手把手教你用WinForm控制艾德克斯IT6322B程控电源(附完整源码)
  • Awoo Installer:任天堂Switch游戏安装的终极解决方案,3种方式快速搞定NSP/NSZ/XCI/XCZ文件
  • Hi3861点灯程序背后的构建系统:手把手教你修改BUILD.gn文件,定制你的第一个鸿蒙应用
  • 微针技术在农业领域的创新应用:精准植保与高效营养输送
  • C++教学竞赛神器:小熊猫C++内置题库、OJ与海龟作图,老师学生都省心了
  • 不只是远程桌面:用向日葵在Ubuntu上实现无人值守文件传输与SSH隧道
  • GANSpace核心原理揭秘:PCA在GAN激活空间中的神奇应用
  • 终极指南:3种高效方法破解Cursor AI编辑器限制,免费使用Pro功能
  • 本地大语言模型部署革命:llama-cpp-python技术架构深度解析