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

学习笔记—双指针算法—移动零

双指针算法

移动零

283. 移动零 - 力扣(LeetCode)

题目描述:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

算法原理:

创建两个指针dest,cur

两个指针的作用:

cur:指向坐标为0的位置,从左往右扫描数组,遍历数组

dest:指向坐标为-1的位置,在处理过的区间内,非零元素的最后一个位置,把处理过的区间分为非零区间和零区间

cur从左往右遍历过程:

遇到0元素,cur++

遇到非0元素,dest++,dest与cur交换,cur++

代码实现:

​class Solution {
public:void moveZeroes(vector<int>& nums) {for(int dest=-1,cur=0;cur<nums.size();cur++){if(nums[cur])//处理非0元素{swap(nums[++dest],nums[cur]);}}}
};​

http://www.xdnf.cn/news/2558.html

相关文章:

  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: NSString类型与CFStringRef类型字符串相互转换.
  • 通过数据增强打造抗噪音多模态大模型
  • MySQL 大数据量分页查询优化指南
  • Git 撤回合并提交
  • WPF之XAML基础
  • AlexNet网络搭建
  • OneNet云平台
  • java16
  • Java快速上手之实验五
  • 若依脱敏功能升级:接口返回想脱就脱,想不脱就不脱(实现灵活可控制的数据脱敏)
  • 手撕——贪吃蛇小游戏(下)
  • 【quantity】1 创建 crates.io 账号并上传 Rust 库
  • 数据库查询艺术:从单表操作到多表联查的全面指南
  • Rollup、Webpack、Esbuild 和 Vite 前端打包工具
  • Redis01-基础-入门
  • 华为仓颉编程语言的实际用法与使用领域详解
  • OpenCV实验室工具的使用
  • 【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程
  • C/C++死锁和活锁
  • k8s学习记录(五):Pod亲和性详解
  • 解决两个技术问题后小有感触-QZ Tray使用经验小总结
  • 分布式GPU上计算长向量模的方法
  • 数据一致性问题剖析与实践(四)——竞态条件竞争导致的一致性问题
  • 制作一款打飞机游戏26:精灵编辑器
  • streamlit实现非原生的按钮触发效果 + flask实现带信息的按钮触发
  • Pikachu靶场-PHP反序列化漏洞
  • 2024ICPC网络赛第二场题解
  • DeepSeek:重构人类文明的智能引擎
  • JVM——运行时数据区
  • NLP预处理:如何 处理表情符号