leetcode - Move Zeroes

来源:互联网 发布:入骨相思知不知txt番外 编辑:程序博客网 时间:2024/06/02 15:41

题目:

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:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.



 Solution {public:    void moveZeroes(vector<int>& nums) {        if(nums.size()<=1)            return;        int zeroi=0,noni=0;        for(zeroi=0;zeroi<nums.size();++zeroi)        {            if(nums[zeroi]==0)                break;        }        if(zeroi==nums.size())            return;         for(noni=0;noni<nums.size();++noni)        {            if(nums[noni]!=0)                break;        }        if(noni==nums.size())            return;        while(noni<nums.size() )        {            if(noni>zeroi)                swap(nums[zeroi],nums[noni]);            else                noni++;            while(nums[zeroi]!=0)                zeroi++;             while(noni<nums.size() && nums[noni]==0)                noni++;        }    }};


0 0
原创粉丝点击