283. 移动零

283. 移动零

easy

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

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

示例 1:

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

示例 2:

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

快慢指针

不多 bb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
func moveZeroes(nums []int) {
	var i, j = 0, 0
	for j < len(nums) {
		for nums[j] == 0 {
			// j移动到第一个非零位置
			j++
			if j == len(nums) {
				return
			}
		}
		nums[i], nums[j] = nums[j], nums[i]
		i++
		j++
	}
}