- 题目要求:
思路:
- 开一个字典用来去重
- 开一个新的链表用来返回
- 遍历链表,如果当前值已经在字典中,直接遍历下一个,如果不在字典中,那么把这个值加到字典中后,加到新的链表中
- 核心代码:
# 新建一个链表节点作为返回链表的头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