题目:
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
必须在不复制数组的情况下原地对数组进行操作。
个人思考:for循环数组,循环次数为数组大小,遇0删除,数组尾插0,数组迭代器不++
遇非0,数组迭代器++。 简单描述:遍历数组遇0抓取放到尾部。
个人C++代码:
官方题解:双指针法
使用双指针,左边指针指向待处理序列的头部,右边指针指向当前已经处理好的序列的尾部。
左边指针遇到非0继续向右移动,遇到0时,和右边指针交换元素,之后,左边指针不移动,右边指针向左移动一个。左边指针移动次数为数组大小。
官方C++代码: