1. 080
remove-duplicates-from-sorted-array-ii
2.算法
- O(n)
3. 代码
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n=nums.size();
if(n<=2)
return n;
int ret=0;
for(int i=0;i<n-2;i++)
if(nums[i]!=nums[i+1]||nums[i]!=nums[i+2])
nums[ret++]=nums[i];
nums[ret++]=nums[n-2];
nums[ret++]=nums[n-1];
return ret;
}
};
- count :记录还可以重复几次,初始化为1
int removeDuplication(int A[],int n){
if(n<=2) return n;
int pre=0,cur=1,count=1;
while(cur<n){
if(A[pre]==A[cur]&&count==0) ++cur;
else{
if (A[pre]==A[cur] ) --count;
else count=1;
A[++pre]=A[cur++];
}
}
return pre+1;
}