LeetCode-in-All

283. Move Zeroes

Easy

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.

Example 1:

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

Output: [1,3,12,0,0]

Example 2:

Input: nums = [0]

Output: [0]

Constraints:

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

Solution

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    let firstZero = 0

    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
            swap(firstZero, i, nums)
            firstZero++
        }
    }
};

const swap = (index1, index2, nums) => {
    const temp = nums[index2]
    nums[index2] = nums[index1]
    nums[index1] = temp
};

export { moveZeroes }