class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
pre = i = head
while i:
while i.next and i.val == i.next.val:
i = i.next
if pre != i:
pre.next = i.next
i = i.next
pre = i
else:
i = i.next
pre = i
return head
解法二:
创建一个集合记录出现过的节点值,每次查表,遇到重复就跳过
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
s = set() #出现过的值集
Head = ListNode(0)
Head.next = head
pre, i = Head, head #前驱和工作节点
while i:
if i.val in s: #跳过重复
pre.next = i.next
else:
s.add(i.val) #第一次出现,写入值集
pre = i
i = i.next
return Head.next