leetcode之283移动零Golang
将数组中的0元素移动到最后,而其他元素的顺序保持不变,所以我们考虑双指针的做法
第一个指针用于遍历整个数组,如果这个指针遍历到的数组元素不等于0,那么就将这个值存到第二个指针指向的位置,然后将第二个指针向后移动一个位置
最后将第二个指针后面的数组位置全部补上0就可以了
算法
-
定义指针
index,初始值为-1 -
定义第二个指针,用来遍历数组
-
如果指向的值不等于0,那么
index加1,并且将index指向的数组位置设置为遍历到的这个非0元素 -
如果指向的值等于0,那么就直接跳过,继续遍历后续原
-
-
从
index+1到数组最后,全部赋值为0
代码
func moveZeroes(nums []int) {
index := -1
for i := 0; i < len(nums); i++ {
if nums[i] != 0 {
index++
nums[index] = nums[i]
}
}
for i := index + 1; i < len(nums); i++ {
nums[i] = 0
}
}
浙公网安备 33010602011771号