删除数组中的重复项

 

给你一个有序数组nums,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度

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

使用双指针的方式来写这道题,当函数接收一个数组时,定义一个快指针一个慢指针,当两个指针所指向的数相等时快指针向右移动,反之则慢指针向右移动,将快指针指向的值赋给慢指针,直到快指针运动到数组最后一个元素时终止。最后返回slow+1是因为slow是从下标为0开始的,数组长度就为slow+1