LeetCode:26. 删除排序数组中的重复项(python)(第一思路没想到用快慢指针)

解题思路

几乎所有的题解都是快慢指针的做法,但看到题目我的第一思路就是:若当第i项和第i+1项相等,则remove第i+1项。但一直报错,,,才发现用for循环无法改变l的值,于是有了下面的while代码,思路见注释。力扣也写了题解:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/wu-fa-gai-bian-lforgai-while-by-awang-qi-i6vt/
在这里插入图片描述

代码

class Solution(object):
    def removeDuplicates(self,nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l = len(nums)
        i=0
        while i<l-1: # 因为是和第i+1项比较,所以i<l-1
            if (nums[i]==nums[i+1]):
                nums.remove(nums[i+1])
                i=i-1 # 删掉第i+1项,仍要和新的第i+1项进行比较
                l = l-1 # 删掉一个元素后l=l-1
            i=i+1 #i递增
        return l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值