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]
.
int removeDuplicates(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n<=2 || A==NULL)return n;
int res = 1;
int pre = A[0];
bool twice = false;
for(int i=1;i<n;i++)
{
if(A[i]==pre && twice)
continue;
else if(A[i]==pre)
{
A[res] = A[i];
res++;
twice=true;
}else{
A[res]=A[i];
res++;
pre = A[i];
twice = false;
}
}
return res;
}