给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
- 定义快慢双指针
- 快指针遍历nums,遇到不为零的数,将快指针对应的数给慢指针对应的数
- 慢指针再右移一位
- 快指针遍历一遍之后,所有不为0的数都已经到了数组的最前面 从慢指针开始,往后的数都赋值为0即可
class Solution {
public void moveZeroes(int[] nums) {
int size=nums.length;
//赋前边的值
int slow=0;
for(int fast=0;fast<size;fast++){
if(nums[fast]!=0){
nums[slow++]=nums[fast];
}
}
//赋0
for(int i=slow;i<size;i++){
nums[i]=0;
}
}
}