1. 程式人生 > >[LintCode]100.刪除排序陣列中的重複數字

[LintCode]100.刪除排序陣列中的重複數字

給定一個排序陣列,在原陣列中刪除重複出現的數字,使得每個元素只出現一次,並且返回新的陣列的長度。

不要使用額外的陣列空間,必須在原地沒有額外空間的條件下完成。

樣例

給出陣列A =[1,1,2],你的函式應該返回長度2,此時A=[1,2]

思路:對陣列遍歷一次,並設定一個計數器,每當遍歷前後元素不相同,計數器加1,並將當前遍歷的元素覆蓋到計數器對應在陣列中位置。遍歷完後,重新調整陣列長度大小。
vector.resize(n)  調整容器的長度大小,使其能容納n個元素。如果n小於容器的當前的size,則刪除多出來的元素。否則,新增採用值初始化的元素。

class Solution {
public:
    /*
     * @param nums: An ineger array
     * @return: An integer
     */
    int removeDuplicates(vector<int> &nums) {
        if(nums.empty()) return 0;  
        int count=0;
        for(int i=1;i<nums.size();i++){
            if(nums[i]!=nums[count]){
                nums[++count]=nums[i];
            }
        }
        nums.resize(count+1); 
        return count+1;
    }
};