描述
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],
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]
#include<iostream>
using namespace std;
int DeleteDuplicate(int a[], int n)
{
if (a == NULL || n <= 2)
return n;
int i = 0;
int j = 1;
for (; j < n;)
{
if (a[i] != a[j])
{
i++;
a[i] = a[j];
j++;
}
else
{
while (a[i] == a[j])
j++;
i++;
a[i] = a[j - 1];
}
}
return i + 1;
}
int main()
{
const int n = 12;
int a[n] = { 1, 1, 2, 2, 2, 2, 3, 3, 3, 5 };
int k = DeleteDuplicate(a, n);
for (int i = 0; i < k; i++)
cout << a[i] << " ";
cout << endl;
}