给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
分析:观察上面的测试用例 在1之前有一个0 需要移动的位置是1的索引减去领的索引--变为1-0-0-3-12
索引3需要移动的位置是索引3减去两个0得到1这个索引位置 ----1-3-0-0-12
同理12的位置就是自己的索引4减去0的个数2得到索引位置
代码如下=
func moveZeroes(nums []int) {
var nZero = 0
for index, value := range nums {
if value == 0 {
nZero++
continue
}
if nZero == 0 {
continue
}
nums[index-nZero] = value
nums[index] = 0
}
}