leetcode 数组类算法 移动0

文章讨论了如何在不复制数组的情况下,通过原地操作将所有0移动到数组的末尾,同时保持非零元素的相对顺序。提出了两种方法:一种是使用for循环删除和尾插0,另一种是采用双指针技术,左右指针配合交换元素。官方推荐的解决方案是双指针法,它更高效且简洁。
摘要由CSDN通过智能技术生成

题目:

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

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

 

个人思考:for循环数组,循环次数为数组大小,遇0删除,数组尾插0,数组迭代器不++

                  遇非0,数组迭代器++。  简单描述:遍历数组遇0抓取放到尾部。

个人C++代码:

 

官方题解:双指针法

使用双指针,左边指针指向待处理序列的头部,右边指针指向当前已经处理好的序列的尾部。

左边指针遇到非0继续向右移动,遇到0时,和右边指针交换元素,之后,左边指针不移动,右边指针向左移动一个。左边指针移动次数为数组大小。

官方C++代码:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值