文章目录
题目:283. 移动零(easy)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
进阶:你能尽量减少完成的操作次数吗?
解题
方法:左右指针
左右指针,两个指针都从0位置开始,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。
右指针先移动,遇到非0数,就和左指针指向的数进行交换,交换完左指针+1,这样左指针始终指向第一个0。
这种思路移动的次数是很少的,直接将非0数移到它该去的位置,一步到位。
// 时间O(N),空间O(1)
class Solution