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 == 0)
{
return 0;
}
count = 1;
num = A[0];
length = 1;
ve_int.push_back(num);
for (int i = 1; i < n; )
{
if (A[i] == num)
{
if (count == 2)
{
i++;
}
else
{
count++;
length++;
ve_int.push_back(A[i]);
i++;
}
}
else
{
num = A[i];
count =1;
length++;
ve_int.push_back(A[i]);
i++;
}
}
int i = 0;
for (vector<int>:: const_iterator it = ve_int.begin(); it != ve_int.end(); it++)
{
A[i] = *it;
i++;
}
return length;
}
private:
int count;
int num;
int length;
vector<int> ve_int;
};