leetcode-26. Remove Duplicates from Sorted Array


解題思路:

首先考慮利用vector容器自身提供的erase方法。使用一個歷史變量保存上一個瀏覽過的元素,當前訪問元素與歷史記錄不同時向前移動指針否則刪除指針。但這種方法效率較低。考慮換一種寫法,可以不使用容器提供的方法,效率還可以更快。



解題代碼一:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int len = nums.size();
        if(len==0)  return 0;
        int his = nums[0];
        int cnt = 1;
        
        for(auto it=nums.begin()+1;it!=nums.end();){
            if(*it==his)
                nums.erase(it);
            else{
               his = *it;
               ++it;
            }
        }
        return nums.size();
    }

};


解題代碼二:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int len = nums.size();
        if(len<2)  return len;
        int ix = 1;
        for(int i=1;i<len;i++){
            if(nums[i]!=nums[i-1]){
                nums[ix++] = nums[i];
            }
        }
        return ix;
    }
};


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