# [Solved] Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements.

## 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 = 
Output: 
```

Constraints:

• `1 <= nums.length <= 104`
• `-231 <= nums[i] <= 231 - 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
``` ##### Abhishek Sharma

Started my Data Science journey in my 2nd year of college and since then continuously into it because of the magical powers of ML and continuously doing projects in almost every domain of AI like ML, DL, CV, NLP.

Articles: 521