Problem Description:
Given an array
nums
, write a function to move all0
'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.
Analysis:
本题的思路就是将所有的非零元素按照次序依次放到数组的前面,最后将数组的后面的元素全部赋值为零。代码如下:
Code:
class Solution {
public void moveZeroes(int[] nums) {
int start = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] != 0) {
nums[start++] = nums[i];
}
}
for(int i = start; i < nums.length; i++) {
nums[i] = 0;
}
}
}