LeetCode题解(0026):删除排序数组中的重复值(Python)
发布日期:2021-06-29 19:51:41 浏览次数:3 分类:技术文章

本文共 861 字,大约阅读时间需要 2 分钟。

LeetCode题解:0026(删除排序数组中的重复值)

(简单)

解法 执行用时
Ans 1 (Python) 60ms (>45.26%)
Ans 2 (Python) 1040ms (>8.16%)
Ans 3 (Python) 52ms (>62.63%)

解法一(遍历寻找重复值,,再遍历移除):

def removeDuplicates(self, nums: List[int]) -> int:    hashset = set()    del_list = []    for i in range(len(nums)):        d = nums[i]        if d not in hashset:            hashset.add(d)        else:            del_list.append(i)    for i in del_list[::-1]:        nums.pop(i)    return len(nums)

解法二(一次遍历直接移除):

def removeDuplicates(self, nums: List[int]) -> int:    for i in range(len(nums))[::-1]:        d = nums[i]        if d in nums[i + 1:]:            nums.pop(i)    return len(nums)

解法三(注意到排序数组的条件):

def removeDuplicates(self, nums: List[int]) -> int:    m = 0    for i in range(len(nums) - 1):        if nums[i + 1] != nums[i]:            m += 1            nums[m] = nums[i + 1]    return m + 1

转载地址:https://dataartist.blog.csdn.net/article/details/106759167 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode题解(0027):移除数组中等于指定值的元素(Python)
下一篇:LeetCode题解(0021):合并两个有序链表(Python)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月11日 06时13分37秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章