删除有序数组中的重复项c语言实现

一.题目描述

删除有序数组中的重复项c语言实现_第1张图片

二.题目分析

要求删除数组中的重复项,并且返回修改后元素个数,题目要求:原地删除,这就要求时间复杂度为O(1),空间复杂度为O(1).

三.解题思路分析

用两个指针,因为数组中元素是有序的,要求在数组中修改,那就需要考虑快慢指针了,fast,slow,

四.代码实现

int removeDuplicates(int* nums, int numsSize)
{
    int count=0;
    int slow=0;
    int fast=1;
    while(fast<numsSize)
    {
        if(nums[slow]==nums[fast])
        {
            fast++;
        }
        else
        {
            count++;
            nums[slow+1]=nums[fast];
            slow++;
            fast++;
        }
    }
    return count+1;

}

你可能感兴趣的:(刷题,c语言,算法,数据结构)