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