这题的思路是先将非零元素都移动到前面,再将后面的元素置为0.这么做需要求一个0的个数,定义两个快慢指针,当快指针指向的值不为0的时候就把值赋给慢指针指向的值。
最后两个指针的差值其实就是0的个数。
class Solution {
public void moveZeroes(int[] nums) {
int slow = 0;
for(int i = 0; i < nums.length;i++){
if(nums[i]!=0){
nums[slow] = nums[i];
slow++;
}
}
for(int i = slow;i < nums.length;i++){
nums[i] = 0;
}
}
}
也可以将if里面改成交换两个数,这样的话相当于慢指针永远指向的是0的时候他俩交换位置。