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(object): def moveZeroes(self, nums): """ :type nums: List[int] :rtype: void Do not return anything, modify nums in-place instead. """ i = 0 while i<len(nums): #find the first zero if nums[i] == 0: break else: i += 1 j = i+1; while j < len(nums): #find the first none zero if nums[j] != 0: break else: j += 1 while(j<len(nums)): nums[i] = nums[j] nums[j] = 0 j += 1 i += 1 while j<len(nums) and nums[j] == 0: j += 1 while i<len(nums) and nums[i] != 0: i += 1void moveZeroes(vector<int>& nums) { int last = 0, cur = 0; while(cur < nums.size()) { if(nums[cur] != 0) { swap(nums[last], nums[cur]); last++; } cur++; }}
新闻热点
疑难解答