Move Zeroes

Question

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.

Tags

  • Array
  • Two Pointers

Thought

Reference: http://bookshadow.com/weblog/2015/09/19/leetcode-move-zeroes/

Use the two pointers x and y here. y is used to represent the index of the item which has the first 0 in the array.

Code

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        y = 0
        for x in range(len(nums)):
            if nums[x]:
                nums[x], nums[y] = nums[y], nums[x]
                y += 1

results matching ""

    No results matching ""