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.
Example:
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.
My code:
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
i=0
j=0
while i<len(nums) and j<len(nums):
if nums[i]==0:
while j<len(nums) and nums[j]==0:
j=j+1
if j==len(nums):
break
tmp=nums[j]
nums[j]=nums[i]
nums[i]=tmp
i=i+1
if j<i:
j=i