• 题目要求:

  • 思路:

    • 开一个字典用来去重
    • 开一个新的链表用来返回
    • 遍历链表,如果当前值已经在字典中,直接遍历下一个,如果不在字典中,那么把这个值加到字典中后,加到新的链表中
  • 核心代码:
# 新建一个链表节点作为返回链表的头n = ListNode(0)# 新建字典用来去重mydict = {}# 把新链表的头赋给tmp用来插入新节点tmp = n# cur用来保存遍历给定链表所到的节点cur = head# 遍历链表while cur:    # 如果这个值已经在字典中,遍历下一个节点    if cur.val in mydict:        cur = cur.next    # 如果这个值不在字典中,把这个值添加到字典中,把这个节点添加到新链表中    else:        mydict[cur.val] = True        tmp.next = ListNode(cur.val)        cur = cur.next        tmp = tmp.next# 返回新链表头的下一个return n.next
  • 完整代码
# Definition for singly-linked list.# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    def removeDuplicateNodes(self, head: ListNode) -> ListNode:        n = ListNode(0)        mydict = {}        tmp = n        cur = head        while cur:            if cur.val in mydict:                cur = cur.next            else:                mydict[cur.val] = True                tmp.next = ListNode(cur.val)                cur = cur.next                tmp = tmp.next        return n.next