新闻详情

新闻详情

首页 / 资讯中心 / 详情

双指针算法:处理数组中的0

发布时间:2026/9/29 9:34:01来源:尧图网络
双指针算法:处理数组中的0
1.移动零将数组中的0移动至末尾同时不改变其它元素的顺序。力扣原链接283. 移动零 - 力扣LeetCode设置指针left和rightleft初始为-1right为0.当right指向非零元素left, 这样left要么和right指向同一地点要么刚好跳到需要交换的0这么一交换0就被挪到后面去了。class Solution { public: void moveZeroes(vectorint nums) { for (int left -1, right 0; right nums.size(); right) { if (nums[right]) { left; swap(nums[right], nums[left]); } } } };2.复写零把数组中的零重复写一遍数组长度不变因此末尾的一些元素会被挤掉。1089. 复写零 - 力扣LeetCode第一步我们要先找到复写后最后一个元素的位置因此我们使用了两个指针slow和fast。fast负责遍历数组遇到0让slow移动两位遇到非0slow移动一位当slow超出数组范围时我们便break。第二步break之后fast刚好停在目标位置而slow则会停在size的位置但这里存在一种特殊情况会使得slow停在size 1的位置这点我们稍后再说。第三步在正常情况下我们让slow--回到合法位置然后利用fast从后往前赋值。当fast指向非0元素时我们把fast赋给slow相当于把非零元素往前挪了一位二者同时--直到fast指向0我们让slow--两次每次把该位置赋成0让后让fast--这就是复写了0。最后再说特殊情况。特殊示例vector8 4 5 0 0 0 0 7 size size 10 1 2 3 4 5 6 7 8 9如果没有特殊处理当fast来到第三个0时slow来到了下标为9即size 1的位置。普通的slow--会出问题所以我们需要让slow-3来到下标6处即最后元素的前一位fast也要减减也来到下标6处之后开始复写而最后一位7则要手动赋成0。class Solution { public: void duplicateZeros(vectorint arr) { int fast 0, slow 0, n arr.size(); while (fast arr.size()) { if (arr[fast]) { slow; } else { slow 2; } if (slow n) { break; } fast; } if (slow n) { arr[n - 1] 0; slow - 3; fast--; } else slow--; while (fast 0) { if (arr[fast]) { arr[slow] arr[fast]; fast--; slow--; } else { arr[slow--] 0; arr[slow--] 0; fast--; } } } };
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

华为平板搭建ESP32开发环境:TaoToken统一Key接入与串口烧录验证 2026/9/29 10:44:47

华为平板搭建ESP32开发环境:TaoToken统一Key接入与串口烧录验证

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

阅读更多 →
MergeKit 贡献指南:从环境搭建、CLA 签署到 Pull Request 合入的完整开发者流程 2026/9/29 10:44:40

MergeKit 贡献指南:从环境搭建、CLA 签署到 Pull Request 合入的完整开发者流程

大模型模型优化AI 应用 【免费下载链接】mergekit Tools for merging pretrained large language models. 项目地址: https://gitcode.com/gh_mirrors/me/mergekit 点击查看 免费下载 MergeKit 是一套面向预训练大语言模型合并(merging)的工…

阅读更多 →
GitAgent内存系统深度解析:Git提交式记忆如何让AI的历史可追溯 2026/9/29 10:44:34

GitAgent内存系统深度解析:Git提交式记忆如何让AI的历史可追溯

GitAgent内存系统深度解析:Git提交式记忆如何让AI的历史可追溯 【免费下载链接】opengap A framework-agnostic, git-native standard for defining AI agents 项目地址: https://gitcode.com/gh_mirrors/git/opengap GitAgent(GitAgent内存系统&…

阅读更多 →
OpenClaw 2.7.9 新手配置全流程:从 settings.json 骨架到 TaoToken 接入 2026/9/29 10:44:27

OpenClaw 2.7.9 新手配置全流程:从 settings.json 骨架到 TaoToken 接入

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

阅读更多 →
Spring Boot校企合作信息管理平台毕业设计实战解析 2026/9/29 10:44:13

Spring Boot校企合作信息管理平台毕业设计实战解析

又到了毕业设计的最忙阶段,后台陆续收到不少同学的问题,十个里有八个都在问同一个方向:"老师,Spring Boot项目到底选什么题目好上手?"今天就把我实际带过的、也是每年都要被问很多次的"校企合作信息管理…

阅读更多 →
Docker下Alist配置SSL证书:Nginx反代实战与常见坑 2026/9/29 10:44:12

Docker下Alist配置SSL证书:Nginx反代实战与常见坑

最近捣鼓Docker部署的Alist时,最折腾人的一件事就是HTTPS证书。浏览器地址栏那个“不安全”的红色警告,对于自建网盘、影视库或者给朋友分享文件的人来说,实在是碍眼。更麻烦的是,直接用Docker跑的Alist,你在后台界面里…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉