给定一个数组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;
    }
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM