LeetCode283 移動0

題目描述

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:

必須在原數組上操作,不能拷貝額外的數組。
儘量減少操作次數。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/move-zeroes
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

解題思路

有兩個指針,i和j,如果i遇到爲0,則跳過,
i並不爲0的話,交換i和j 指向的元素的位置。

最後將j指向的位置和向量尾部元素全部置爲0。

代碼

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        if(nums.size()==0){return;}

        int i=0,j=0;

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


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

        
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章