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) {
if (n == 1)
return 1;
int last = A[0];
int count = 0;
int Dup_count = 1;
for (int cur = 1; cur < n; ++cur)
{
if (A[cur] == last){
if (Dup_count >= 2)
count++;
else
A[cur - count] = A[cur];
Dup_count++;
}
else
{
Dup_count = 1;
last = A[cur];
A[cur - count] = A[cur];
}
}
return n - count;
}