[LeetCode] 283. Move Zeros
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.
Thought process:
Two pointers:
- Pointer 1 iterate through the array.
- Pointer 2 points to the next position of the number that's not 0.
Whenever pointer 1 reaches a number that's not 0, swap pointer 1 and 2's numbers and increment pointer 2.
Solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Solution { public void moveZeroes(int[] nums) { int slow = 0; for (int fast = 0; fast < nums.length; fast++) { if (nums[fast] != 0) { int temp = nums[slow]; nums[slow] = nums[fast]; nums[fast] = temp; slow++; } } } } |
Time complexity: O(n).
Comments
Post a Comment