问题
思路
使用快慢指针,两者都从位置0开始移动,如果快指针指向的值不为零,将这个值赋给slow指针指向的值,直到所有的零元素都放在了前面的时候,第一个零出现的位置会从slow指针的位置开始,后续开始赋零值。
代码
public void moveZeroes(int[] nums) {
if(nums.length==0){
return ;
}
int slow=0;
for(int fast=0;fast<nums.length;fast++ ){
if(nums[fast]!=0){
nums[slow]=nums[fast];
slow++;
}
}
for(int i=slow;i<nums.length;i++){
nums[i]=0;
}
}