# Given a sorted linked list, delete all nodes that have duplicate numbers,# leaving only distinct numbers from the original list.## For example,# Given 1->2->3->3->4->4->5, return 1->2->5.# Given 1->1->1->2->3, return 2->3.
AC
classListNode():def__init__(self, x):
self.val = x
self.next = NoneclassSolution():defdeleteDuplicates(self, head):
pre = dummy = ListNode(0)
cur = head
while cur:
if cur.next and cur.next.val == cur.val:
val = cur.val
while cur and cur.val == val:
cur = cur.next
pre.next = cur
else:
pre.next, pre, cur = cur, cur, cur.next
return dummy.next
if __name__ == "__main__":
head, head.next, head.next.next, head.next.next.next, head.next.next.next.next, head.next.next.next.next.next, head.next.next.next.next.next.next\
= ListNode(1), ListNode(2), ListNode(3), ListNode(3), ListNode(4), ListNode(4), ListNode(5)
print(Solution().deleteDuplicates(head))