--- tags: data_structure_python --- # Move Zeroes <img src="https://img.shields.io/badge/-easy-brightgreen"> 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. <ins>**Example:**</ins> ``` Input: [0,1,0,3,12] Output: [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. # Solution ### Solution 1: O(n) in time/space complexity ```python= class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ count = 0 i = 0 while i < len(nums): if nums[i] == 0: count += 1 nums.pop(i) i -= 1 i+= 1 nums += [0]*count ``` ### Solution 2: O(n) in time complexity / O(1) in space complexity ```python= class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) pointer1 = 0 for pointer2 in range(n): if nums[pointer2] != 0: nums[pointer1] = nums[pointer2] pointer1 += 1 for i in range(pointer1, n): nums[i] = 0 ```