Remove Duplicates from Sorted Array(C++刪除排序數組中的重複項)

解題思路:

(1)遍歷數組,向前移動數組,覆蓋重複的元素

(2)耗時O(n*n),並不是好的方法,哈哈哈

class Solution {
public:
    int removeDuplicates(vector<int>& s) {
        int i=0,j;
        int interval,len = s.size();
        while(i<len-1) {
            j=i+1;
            if(s[i]==s[j]) {
                while(j<len && s[i]==s[j]) 
                    j++;
                interval = j-i-1;
                for(int k=i+1;k<len-interval;k++) 
                    s[k]=s[k+interval];
                len-=interval;
            }
            i++;
        }
        return len;
    }
};

(2)使用快慢指針,i指向新的數組的末尾,j指向原始數組的末尾

class Solution {
public:
    int removeDuplicates(vector<int>& s) {
        if(s.size()==0) return 0;
        int i=0;
        for(int j=1;j<s.size();j++) {
            if(s[i]!=s[j]) {
                i++;
                s[i]=s[j];
            }
        }
        return i+1;
    }
};

 

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