首页 > 试题广场 >

删除有序数组中重复的元素 ii

[编程题]删除有序数组中重复的元素 ii
  • 热度指数:13015 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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

编辑于 2024-03-22 21:38:51 回复(0)