Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array A = [1,1,1,2,2,3]
,
Your function should return length = 5
, and A is now [1,1,2,2,3]
.
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(n<2)
return n;
int start=0,cur=1;
int cnt=0;
while(cur<=n-1){
if(A[start]==A[cur]){
cnt++;
if(cnt>1){
cur++;
}
else{
A[++start]=A[cur++];
}
}
else{
cnt=0;
A[++start]=A[cur++];
}
}
return start+1;
}
};