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]
.
Note:
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
从0~nums.length遍历数组,当第一次遍历到非零值时与数组的第一个位置的数交换位置,以此类推。
完整代码:
public class MoveZeros {
public static void moveZeroes(int[] nums) {int i = 0;
for(int j = 0; j < nums.length; j++) {
if (nums[j] != 0) {
int tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
i++;
}
}
for(int n = 0; n < nums.length; n++) {
System.out.println(nums[n]);
}
}
public static void main(String[] args) {
int[] nums = {0,1,0,3,12};
moveZeroes(nums);
}
}