给定一个数组nums,将所有的0移动到数组的末尾,同时保留非0元素的相对顺序;

/**
 * @brief 给定一个数组nums,将所有的0移动到数组的末尾,同时保留非0元素的相对顺序;
 * @param nums
 */

void moveZeros(vector<int>& nums){
    int i = 0,poz = 0;
    for(int i = 0; i < nums.size() && poz < nums.size();i++){
        while(poz < nums.size() && nums[poz] == 0)
            poz++;
        if(poz < nums.size())
            nums[i]=nums[poz];
        else
            i--;
        poz++;
    }

    for(;i<nums.size();i++){
        nums[i] = 0;
    }
}

void moveZeros(vector<int> &nums)
{
    int p1 = 0,p2=0;
    for(;p1<nums.size() && nums[p1]!=0;p1++);
    for(p2=p1;p2<nums.size();p2++){
        if(nums[p2] == 0) continue;
        nums[p1++] = nums[p2];
    }
    //set zero for rest items
    while(p1<nums.size()){
        nums[p1++] = 0;
    }
}

  

怕什么真理无穷,进一寸有一寸的欢喜。---胡适
原文地址:https://www.cnblogs.com/hujianglang/p/12462123.html