給定一個數組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刪除。



猜您在找 Leetcode練習(Python):第283題:移動零:給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 給定一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重復的三元組。 Leetcode練習(Python):滑動窗口:第239題:滑動窗口最大值:給定一個數組 nums,有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。 返回滑動窗口中的最大值。 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 給定一個整數數組 nums 和一個目標值 target,求nums和為target的兩個數的下表 給定一個整數數組 nums,其中恰好有兩個元素只出現一次,其余所有元素均出現兩次。 找出只出現一次的那兩個元素。 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。 NOTE:給出的所有元素都大於0,若數組大小為0,請返回0 刪除數組中為0元素 給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除后數組的新長度,不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數 例如給定nums = [2,7,11,15],target = 9
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM