LeetCode刷题记录----26.删除有序数组中的重复项(easy)

2025/6/30

题目(easy):

我的思路:

很容易发现,要想让数组严格递增,需要记录两个信息,

一个是:当前递增到的最后一个数字       例如(【3,4,5】中5就是最后一个递增数字)

一个是:数组中遍历到的当前数字           例如(【3,4,6,6,7】中,当前可以遍历到7)

这就意味着我们可以用双指针来解决这个问题

代码如下:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        l = len(nums)
        result = 0  #返回结果,记录有几个不重复的数字,同时充当记录当前递增到的数字的下一位的指针
        lastNum = 0
        for i in range(l):      
            if result == 0 or lastNum != nums[i]:
                nums[result] = nums[i]  #把确实可以严格递增的数字移动到本该递增的位置
                result+=1  #总是记录当前最后递增数字位置的下一位
                lastNum = nums[i]
            else:
                continue


        return result

时间复杂度:O(n)【需要遍历整个数组】

空间复杂度:O(1)【只用到了常数作为额外的空间】

总结:

①观察解决问题需要记录的信息点有哪些,数组一般采用遍历方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

萘柰奈

谢谢老板喵

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

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

打赏作者

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

抵扣说明:

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

余额充值