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

发布时间:2026/9/29 9:34:32

双指针算法:处理数组中的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--; } } } };
延伸阅读

更多相关文章

2026/9/29 9:34:32

基于SpringBoot的张家口文旅融合特产交易系统的设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与意义 随着“互联网旅游”和乡村振兴战略的深入推进,文旅产业与地方特色经济的融合发展成为新的增长点。张家口作为2022年冬奥会举办地之一&am…

2026/9/29 9:34:32

基于springboot家庭食谱分享与食材采购推荐系统

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 一、 项目背景与意义 在快节奏的现代生活中,家庭烹饪面临着“吃什么”、“怎么吃”、“如何买”三大核心痛点。传统的食谱应用与生鲜电商平台相互割裂&#…

2026/9/29 10:34:38

水性刮刮银油墨印刷工艺解析:遮盖力与刮感的参数平衡

引言 水性刮刮银油墨是刮刮墨系列中以水为分散介质的功能性产品,印刷干燥后形成银灰色可刮除遮盖层,轻刮即可露出底层图文。相比溶剂型体系,水性刮刮银 VOC 含量低、气味温和,在儿童画本、促销卡、密码标签等场景中应用广。本文从…

2026/9/29 10:34:38

AI辣椒整枝机器人 QT信创完整工程

# AI辣椒整枝机器人 QT信创完整工程 ## 项目概述 适配**统信UOS、银河麒麟**国产信创Qt5.12/5.15,专为辣椒整枝打杈开发AI视觉系统;依据农科院三主枝/四主枝标准,自动识别**门椒底杈、徒长内膛枝、重叠细弱侧芽、保留健壮结果主枝**,机械臂搭载电动剪枝刀定点剪除无效枝;…

2026/9/29 10:34:38

腾讯云Lighthouse免费领取与WorkBuddy部署实操指南

1. 活动背景与核心价值拆解1.1 这个活动到底在做什么腾讯云轻量应用服务器 Lighthouse 联合 WorkBuddy 推出的这次活动,本质上是把两件事绑在了一起:一是给开发者一个低门槛上手轻量云服务器的机会,二是让 WorkBuddy 这个工具在真实服务器环境…

2026/9/29 10:29:37

《Python 大型项目重构实战指南:从混乱到秩序的渐进式策略》 - 实践

《大型项目重构实战指南: 从混乱到秩序的渐进式策略》这本书, 它的第一个大项就是引言部分, 引言部分的主要内容是在回答为什么要进行重构。在软件开发这个领域, 根本不可能存在哪一个项目是一直永远都能够保持那种“干净整洁”的状态的。后面会因为业务上的那些需要被非常快速…

2026/9/28 3:03:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/28 6:05:15

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 0:04:04

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:04:04

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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