## Question

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

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

## Python Solution

class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ l = len(nums) def find_z(start): for i in range(start,l): if nums[i]==0: return i def find_nz(start): for i in range(start,l): if nums[i]!=0: return i start=0 if set(nums)=={0}: pass elif 0 not in nums: pass else: while 1: fz = find_z(start) fnz = find_nz(fz) if sum(nums[fz:])==0: break nums[fz],nums[fnz] = nums[fnz],nums[fz] start= fz + 1 if sum(nums[start:])==0: break