垃圾写法
class Solution {
public void moveZeroes(int[] nums) {
int n = nums.length;
int i =0,j = 1;
while(i<n && j< n){
while(i<n && j< n && nums[i] !=0 && nums[j] != 0) {
i++;
j++;
}
while( j< n && nums[j]==0) j++;
while(i<n && nums[i]!=0) i++;
while(i<n && j< n && nums[i] ==0 && nums[j] != 0){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j++;
}
}
}
}
两个指针,看元素是否为0,为0则交换到右边,不是0则交换到左边,类似快速排序
class Solution {
public void moveZeroes(int[] nums) {
if(nums == null) return;
int j = 0;
for(int i = 0;i <nums.length;i ++) {
if(nums[i] != 0){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
j++;
}
}
}
}
将非0元素放到前面,用j来记录0的个数,在最后把j个0加进去
class Solution {
public void moveZeroes(int[] nums) {
if(nums == null) return;
int j = 0;
//
for(int i = 0;i < nums.length;i++){
if(nums[i] != 0){
nums[j++] = nums[i];
}
}
for(int i = j;i <nums.length;i++ ){
nums[i] = 0;
}
}
}
```