- 注意在每次操作之前preNone和curNone的链接要切断,包括初始的时候dummy和head也是不相连的。
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head
# 初始化dummy和head不连接
dummy = ListNode(head.val-1)
pre = dummy
cur = head
real = dummy
while cur:
last = cur.next
if cur.val != pre.val and (not last or cur.val != last.val):
real.next = cur
real = real.next
# 完成之后获取下一轮的pre和cur, 并切断pre和cur之间的联系
pre = cur
cur = cur.next
pre.next = None
return dummy.next