283. Move Zeroes
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.
思路:
把零放到数组最后,使用two points做,就是使用一个指针记录0和非零的数的分界线,另一个指针去寻找非零的数来和这个分界线的数进行交换。
代码:
java:
代码语言:javascript复制class Solution {
public void moveZeroes(int[] nums) {
if (nums == null || nums.length <= 1) return;
for (int i = 0, j = 0; j < nums.length && i < nums.length;j ){
if (nums[j] != 0) swap(nums, i , j);
}
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}