给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
思路:
设置快慢指针,快指针遍历数组,如果遇到非零元素,则将慢指针+1,然后将快指针的值给慢指针。当快指针到数组尾的时候,慢指针后面的元素都可以给0。
func moveZeroes(nums []int) {
slow:=0
for fast:=0;fast<len(nums);fast++{
if nums[fast]!=0{
nums[slow]=nums[fast]
slow+=1
}
}
for i:=slow;i<len(nums);i++{
nums[i]=0
}
}