0283 - Move Zeroes

0283 - Move Zeroes

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.

Examples

Input: nums = [0,1,0,3,12] Output: [1,3,12,0,0]

Input: nums = [0] Output: [0]

Constraints

1 <= nums.length <= 104 -231 <= nums[i] <= 231 - 1

Follow up: Could you minimize the total number of operations done?

Java Solution

class Solution {
    public void moveZeroes(int[] nums) {
        int p1 = 0;
        int p2 = 0;
        
        while(p2 < nums.length) {
            if(nums[p1] == 0) {
                if(nums[p2] == 0) {
                    p2++;
                } else {
                    nums[p1++] = nums[p2];
                    nums[p2++] = 0;
                }
            } else {
                p1++;
                p2++;
            }
        }        
    }
}

Last updated