给定一个有序数组,删除其中部分元素,使得剩下的每个数最多出现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; }