1. 程式人生 > >C++ Leetcode初級演算法之移動零

C++ Leetcode初級演算法之移動零

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

示例:

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

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

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
//         vector<int>::iterator it;
//         for(it = nums.begin();it<nums.end();it++)
//         {
//             if(*it == 0)
//             {
//                 nums.erase(it);
//                 nums.push_back(0);
//             }
                
//         }
        int zero = 0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i] != 0)
            {
                swap(nums[i],nums[zero]);
                zero++;
            }
        }
        
    }
};