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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (n <= 2) return n;
int i = 0;
int j = 1;
int count = 1;
while (j < n)
{
if (A[j] == A[i])
{
if (count == 2)
{
++j;
}
else
{
++count;
++i;
A[i] = A[j];
++j;
}
}
else
{
++i;
A[i] = A[j];
++j;
count = 1;
}
}
return i+1;
}
};