Move Zeros

less than 1 minute read

Problem Statement

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:

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

Approach

In this one of the easier problems we use two pointers, one is for current place to write number and another goes one by one through all elements. Important thing to note that this is an in-place change problem.

Complexity: Time complexity is O(n), space complexity is O(1).

Solution


def moveZeros(nums):
    start, end = 0, 0
    while end<len(nums):
        if nums[end]!=0:
            nums[start], nums[end] = nums[end], nums[start]
            start += 1
        end+=1

Refrence

Updated:

Leave a comment