这题需要用一个标志位去标志0的位置,从头遍历,当0与非0交换后,查看初始0的下一个位置。若为0则更新标志位,若不为0则说明所有0均被移到后面了。
public void moveZeroes(int[] nums) {
int zero = -1;
for(int i = 0 ; i < nums.length ; i++){
if(zero != - 1 && nums[i] != 0){
nums[zero] = nums[i];
nums[i] = 0;
if(nums[zero + 1] == 0){
zero ++;
}else{
break;
}
}
if(nums[i] == 0 && zero == -1){
zero = i;
}
}
}
image.png