题目:
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.
Example:
Input: [0,1,0,3,12]
Output: [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.
public class MoveZero {
public static void moveZeroes(int[] nums) {
int k = 0;//nums, [0...k)中元素均为非0
//遍历第i个元素后保证nums[0...i]中所有非零元素都按照顺序排列在[0...k]中,同时[k...i]为0
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0)
if(i != k)
swap(nums, k++, i);
else//i==k
k++;
}
}
public static void swap(int [] arr, int i , int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] nums = {0,1,0,3,12};
moveZeroes(nums);
System.out.println(Arrays.toString(nums));
}
}