首页 > 学院 > 开发设计 > 正文

Move Zeroes

2019-11-08 20:18:05
字体:
来源:转载
供稿:网友
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(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 += 1
void moveZeroes(vector<int>& nums) {    int last = 0, cur = 0;        while(cur < nums.size()) {        if(nums[cur] != 0) {            swap(nums[last], nums[cur]);            last++;        }                cur++;    }}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表