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; }