方法一:第一次遍历将每个不为零的数存到数组前面,第二次遍历再把数组后面的部分填0.
public void moveZeroes(int[] nums) {
int len=nums.length;
int index=0;
for(int i=0;i<len;i++){
if(nums[i]!=0){
nums[index++]=nums[i];
}
}
while(index<len){
nums[index++]=0;
}
}
方法二:
left用于指向为0的数,right遍历到不为0的就和left交换,借用了快排的思想。
public void moveZeroes(int[] nums) {
int len=nums.length;
int left=0;//记录0,right遍历到不为0的就和left换
for(int right=0;right<len;right++){
if(nums[right]!=0){
if(right>left){
nums[left]=nums[right];
nums[right]=0;
}
left++;
}
}
}