数据结构初阶之顺序表数组OJ题二——删除有序数组中的重复项

题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array

 解题方法:双指针

令定义src和dest指针,让dest指向第一个元素,src指向第二个元素,让src和src-1比较,当src和src-1不相等时,将src-1赋值给dest

当src==src-1时,src++

当src!=src-1时,dest=src-1,dest++,src++

 

当src==src-1,一直都是src++ 

当src!=src-1时,dest=src-1,dest++,src++

当src==src-1时,src++

 当src!=src-1时,dest=src-1,dest++,src++

 当src==src-1时,src++

  当src!=src-1时,dest=src-1,dest++,src++

当src==numsSize,循环结束,但是无论src与src-1是否相等,都需要将最后一个src赋值给dest,由于使用dest,所以dest还必须自增,但是src不用

PS:当src与src-1相等时的情况

此时,src已经越界,无论是否src与src-1,最后一个元素3都应该赋值过去,与上面src不等于src-1

代码如下:

//双指针解题
int removeDuplicates(int* nums, int numsSize) {
    int dest = 0;
    int src = 1;
    while (src < numsSize)
    {
        //如果src等于src-1,则src一直往后走到与src-1不同,跳过区间里相同的元素
        if (nums[src - 1] == nums[src])
        {
            src++;
        }
        //当src与src不相等时,把src-1给dest
        else
        {
            nums[dest] = nums[src - 1];
            dest++;
            src++;
        }
    }

    //最后一个元素与src-1无论是否相等都需要直接给dest
    nums[dest] = nums[numsSize - 1];
    dest++;

    //返回长度
    return dest;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hiland.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值