[leetcode] 283. Move Zeroes _ Algorithm Problem Solve for python



1. Problem

283. 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.

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 <= 10^4
  • -2^31 <= nums[i] <= 2^31 - 1

2. Solution

I solved this problem like this.

  • Complexity
    • Time complexity : O(N)
    • Space complexity : O(N)
  • Step
    • Check zero count
    • Make ans list except zero value and only zero list.
    • Put ans list values on nums.
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        zero_count = nums.count(0)
        ans = [x for x in nums if x != 0] + [0] * zero_count
        for i, x in enumerate(ans):
            nums[i] = x