0
点赞
收藏
分享

微信扫一扫

大厂的面试程序员流程和技巧,我来聊聊三轮面试都要注意什么

一点读书 2023-04-23 阅读 63

目录

26. 删除有序数组中的重复项

思路

代码


26. 删除有序数组中的重复项

思路

a0ece883687047e79a9540b958309ccc.png

总结思路:
创建一个走的快的(fast),用来定位和之前的数不重复的数

再创建一个走的慢的(slow),用来放fast指向的那个不重复的数

本题要求返回删除之后数组的元素个数,返回slow
因为最开始:⁤s1ow=1,⁤
那slow++的次数就是新数组元素个数,

(用slow-1这种写法在循环里也能防止越界) 

代码

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

b4006cb8411b4b8592395d989956974b.png

举报

相关推荐

0 条评论