给定一个有序数组,删除其中部分元素,使得剩下的每个数最多出现2次。要求删除的数的数量尽可能少。
例如:
给出有序数组 A =[1,1,1,2,2,3],
你给出的函数应该返回length =5, A 变为[1,1,2,2,3].
int removeDuplicates(int* A, int ALen)
{
int i = 0;
int j = 0;
int count = 0;
for (i = 0; i < ALen - count - 2; i++)
{
//判断是否有重复3个的元素
if (A[i] == A[i + 1] && A[i + 1] == A[i + 2])
{
//记录已经删除的个数
count++;
//删除第3个元素
for (j = i + 2; j < ALen - count; j++)
{
A[j] = A[j + 1];
}
//返回上一元素,检查是否仍然重复3个
i--;
}
}
return ALen - count;
}