思路1:
使用双指针:慢指针左边均为非0元素;快指针左边到左指针都为0。
我们只需要不断的去交换这两个指针位置的元素即可。
但是对于这一题而言,因为它需要交换的是0和另外一个非0数,所以我们可以直接覆盖0即可。最后再把0补上就行。
思路2:
用index记录已经覆盖到的位置,把从index到nums.length处的元素全部设为0即可。
代码:
public static void moveZeroes(int[] nums) {
int index = 0;
for (int i = 0; i < nums.length; i++) {
if(nums[i] != 0){
nums[index++] = nums[i];
}
}
for (int i = index; i < nums.length; i++) {
nums[i] = 0;
}
}