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

文章讲述了在有序数组中删除重复项的两种方法,暴力解法的时间复杂度为O(N^2),而双指针法通过比较元素实现,时间复杂度降低到O(N)。提供了C和C++的代码实现示例。
摘要由CSDN通过智能技术生成

目录

1.原题链接:

2.暴力解法:

3.双指针:

4.代码实现:

①.C语言版:

②.C++版:

5.提交结果

6.读书分享:


1.原题链接:

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

2.暴力解法:

因为这个数组是非严格递增排列的,所以我们可以使用一个 cur 指针直接遍历整个数组,val 用来记录前一个遍历的元素的值,当前一次遍历的元素的值与后一次遍历的元素的值相同时,cur 指针后所有元素都向前移动一个单位,如果此时 cur 指针所指的元素的值不等于 val 时,val=当前元素的值,cur++,如此循环,直到把整个数组遍历完。时间复杂度为O(N^2)

3.双指针:

我们可以定义两个指针 left ,right 分别指向数组 nums 下标的0和1,当 nums[right]==nums[left] 的时候,说明这两个元素是重复项,则让 right++;如果 nums[right] != nums[left] ,说明这两个元素不是重复项,则先让 left++(left如果不先自加的话,后面的数会覆盖它),再执行 nums[left] = nums[right] ,直到right遍历完整个数组,返回 left+1(因为left最后会指向最后一个非重复项的位置)。时间复杂度为O(N)

4.代码实现:

①.C语言版:

②.C++版:

虽然C与C++只有一个地方不一样,^-^

5.提交结果

6.读书分享:

道德经·第二十七章》:

是以圣人常善救人,故无弃人;常善救物,故无弃物。

解释:因此,圣人善于救助人民,所以没有被遗弃的人;善于利用万物,所以没有被废弃之物。

道德经·第二十八章》:

知其雄,守其雌,为天下谿(xī)

解释:既有蓬勃向上的朝气,又有温良平和的心态,不求汹涌澎湃,甘当天下潺潺小溪。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值