解題思路:
(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;
}
};