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

LeetCode - 283. 移动零

题目

283. 移动零 - 力扣(LeetCode)

思路

我们使用左右两个指针:左指针left指向已处理好的非零元素的末尾位置,右指针right用于遍历数组。

算法步骤:

  • 初始化left为-1(表示还没有处理任何非零元素)
  • 右指针right从0开始遍历整个数组
  • 当right遇到非零元素时,将left指针前进一步,然后交换left和right指向的元素
  • 这样就能保证left指针左侧的所有元素都是非零的,且保持原有顺序

读者可能出现的错误写法

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = -1;int right = 0;while(right < nums.size()){if(nums[right] != 0){swap(nums[left],nums[right]);left++;}right++;}}
};

为什么是先left++,然后再进行swap的,因为这里初始化left是-1,如何先交换的话就会报错

正确写法

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = -1;int right = 0;while(right < nums.size()){if(nums[right] != 0){swap(nums[++left],nums[right]);}right++;}}
};
http://www.dtcms.com/a/357436.html

相关文章:

  • 应用转生APP:无需Root权限的应用双开和Xposed模块加载工具
  • 使用ansible临时命令完成以下操作
  • 如何去除edge浏览器的灰色边框
  • 临床研究三千问——如何将临床问题转换成科学问题(7)
  • Python字符串转日期完全指南:从基础到企业级应用实践
  • 如何避免分库分表后的“数据热点”与“扩容噩梦”?
  • 【MySQL】练习12-2:配置复制
  • 金属结构疲劳寿命预测与健康监测技术—— 融合能量法、红外热像技术与深度学习的前沿实践
  • ros2--service/服务--接口
  • zyplayer-doc 开源知识库:部署与使用指南
  • 网络编程 反射【详解】 | Java 学习日志 | 第 15 天
  • 瞬态数据表定义Fluent变量
  • [打包压缩] gzip压缩和解压缩介绍
  • 无人机固件升级与技术要点解析
  • 2025 年 8 月《DeepSeek-V3.1 SQL 能力评测报告》发布
  • 表复制某些字段的操作sql
  • 深入探讨可视化技术如何实现安全监测
  • 13 SQL进阶-InnoDB引擎(8.23)
  • nginx.conf配置详解
  • DNS域名系统
  • 【Java基础|第三十篇】File流
  • ClickHouse 客户端
  • 【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻
  • 【LeetCode】动态规划——72.编辑距离、10.正则表达式匹配
  • Springboot高校迎新系统2cbcd(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 独角数卡对接蓝鲸支付平台实现个人发卡
  • CS144 lab3 tcp_sender
  • Day16(前端:JavaScript基础阶段)
  • Pycharm打包PaddleOCR过程及问题解决方法
  • Go语言-->if判断中的;