Leetcode刷题记录——26. 删除排序数组中的重复项

在这里插入图片描述

在这里插入图片描述
思路简介:
考虑到数组时排序的,我们设置两个指针start和cur,
其中start指向上一个能确定的不重复数字
cur指向当前考察的数字
它们在一开始分别指向前两个元素
若所指的两个元素不等,
我们将start指向cur,cur指向cur+1
若所指的元素相等,我们将cur记录到一个数组Indexlist中
然后将cur后移而start不变

最后,我们将indexlist反转后,从反转过后的第一个元素开始pop删除对应重复数字
最后输出长度即可


class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        length = len(nums)
        start = 0
        cur = 1
        suma = 1
        indexlist = []
        while cur < length:
            if nums[start] != nums[cur]:
                start = cur
                cur += 1
                suma += 1
            elif nums[start] == nums[cur]:
                indexlist.append(cur)
                cur += 1
        indexlist = indexlist[::-1]
        for pos in indexlist:
            nums.pop(pos)
        return suma
发布了59 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/105477297