目录
题目
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
思路
和之前不同的地方在于它把0加到了后面
本题的关键在于数组长度不会改变
代码
class Solution {
public void moveZeroes(int[] nums) {
int slow=0;
int i=0;
for(int fast=0;fast<nums.length;fast++){
if(nums[fast]!=0){//先把不等于0的数字都按照原来的顺序弄好,相当于把0都扔出来了
nums[slow]=nums[fast];
slow++;
}
}
for(int fast=slow;fast<nums.length;fast++){//都扔出来以后,这道题的的数组长度是不会变化的,所以就长度不变,把少了的补上0就可以了
nums[fast]=0;
}
}
}