283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
双指针:交换
public void moveZeroes1(int[] nums){
if(nums==null || nums.length<2){
return;
}
int s=0;
for(int f=0;f<nums.length;f++){
if(nums[f]!=0){
swap(nums,f,s);
s++;
}
}
}
private void swap(int[] nums,int i,int j){
int temp=nums[i];
nums[i]=nums[j];
nums[j
}
双指针:覆盖
public void moveZeroes2(int[] nums){
int s=0;
for(int f=0;f<nums.length;f++){
if(nums[f]!=0){
nums[s++]=nums[f];
}
}
for(int i=s;i<nums.length;i++){
nums[i]=0;
}
}

浙公网安备 33010602011771号