Given an array nums
, write a function to move all 0
's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
public class Solution {
/*
* 设置一个标志位i,遍历数组每个值
* 如果值为0,标志位i加一;否则加入自定义数组中
* 遍历结束后将个数为i的0追加到自定义数组尾部
*/
public void moveZeroes(int[] nums) {
int[] arrayNums = new int[nums.length];
int j = 0, k = 0;
int number;
for(int i = 0; i < nums.length; i++){
number = nums[i];
if(number == 0)
j++;
else
arrayNums[k++] = number;
}
for(int m = k; m < nums.length; m++){
arrayNums[m] = 0;
}
for(int n = 0; n < nums.length; n++){
nums[n] = arrayNums[n];
}
}
}