【leetcode】82: 删除排序链表中的重复元素 II

题目如下所示:

 

 这个题目我使用字典的方法对其进行了处理,什么意思呢?

就是首先遍历这个链表,然后使用字典统计每一个数字出现的次数,如果出现的次数大于了1次,那么则将其排序后放到我们新创建的链表里,代码如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        ls=[]
        while head:
            ls.append(head.val)
            head=head.next
        #使用字典的特性,对出现的数字进行统计

        dicton={}
        for key in ls:
            dicton[key]=dicton.get(key,0)+1
        new_ls=[]
        for i in dicton:
            if dicton[i]>1:
                pass
            else:
                new_ls.append(i)
        new_ls=sorted(new_ls)
        node=ListNode(0)
        ret=node
        for i in new_ls:
            node.next=ListNode(i)
            node=node.next
        return ret.next

本题目,主要考察了对python字典的使用,如果熟悉这个特性的话,就可以很快做出此题。

速度超过全国50%,内存超过全国79%

posted @ 2021-08-25 19:53  Geeksongs  阅读(28)  评论(0编辑  收藏  举报

Coded by Geeksongs on Linux

All rights reserved, no one is allowed to pirate or use the document for other purposes.