1. 程式人生 > >Day 16 leetcode283 移動零

Day 16 leetcode283 移動零

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

示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。

解法: 將所有非零元素按順序平移到最前面。

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int lastzerofindlocation =0;
        for(int i=0;i<nums.size();++i)
        {
            if(nums[i]!=0)nums[lastzerofindlocation++]=nums[i];
        }
        for(int i=lastzerofindlocation;i<nums.size();++i)
            nums[i]=0;
    }
};