283 - Move Zero
[283 - Move Zero]
๐ LeetCode Link
Problem Description
Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.
Idea
use two pointer so we only need to iterate once
Logic
- set slow pointer to mark current index
- set fast pointer and use it for iterating
- use fast pointer to find non-zero element
- swap the value between slow
Code (Java - Closed Interval)
class Solution {
public void moveZeroes(int[] nums) {
// set slow pointer
int slow = 0;
// use fast pointer in the loop
for(int fast = 0; fast <= nums.length - 1; fast++){
// exchange value when fast pointer point to non-zero element
if(nums[fast] != 0){
int tmp = nums[slow];
// move slow pointer
nums[slow++] = nums[fast];
nums[fast] = tmp;
}
}
}
}