https://leetcode.com/problems/move-zeroes/
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.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [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
class Solution: # 无法改变参数,必须重新赋值,why? def moveZeros(self,nums): n = len(nums) res = [ x for x in nums if x>0 ] for i in range(n-len(res)): res.append(0) for i in xrange(len(nums)): nums[i] = res[i] def moveZeros2(self,nums): if nums == None or len(nums)==0: return j = 0 for i in xrange(len(nums)): if nums[i]: nums[i],nums[j] = nums[j],nums[i] j += 1