题目

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1:

输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2:

输入: 1->1->1->2->3 输出: 2->3

代码

可能会删除头节点,所以设立一个哨兵节点

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def deleteDuplicates(self, head: ListNode) -> ListNode:
  8. """
  9. 可能会删除头节点,所以设立一个哨兵节点
  10. """
  11. dummy = ListNode(0)
  12. dummy.next = head
  13. head = dummy
  14. while head.next and head.next.next:
  15. if head.next.val == head.next.next.val: # 判断下两个节点的值是否相同
  16. val = head.next.val # 相同的话记录相同的值
  17. while head.next and head.next.val == val: #
  18. head.next = head.next.next
  19. else:
  20. head = head.next
  21. return dummy.next

动画.pptx