Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
# Definition for singly-linked list.
 # class ListNode:
 #     def __init__(self, x):
 #         self.val = x
 #         self.next = None
 
 class Solution:
     def deleteDuplicates(self, head):
         """
         :type head: ListNode
         :rtype: ListNode
         """
         dummy = ListNode(0)
         dummy.next = head
         node = dummy
         while node.next:
             next = node.next
             val = next.val
             if next.next and next.next.val == val:
                 next = next.next.next
                 while next and next.val == val:
                     next = next.next
                 node.next = next
             else:
                 node = node.next
         return dummy.next
# Definition for singly-linked list.
 # class ListNode:
 #     def __init__(self, x):
 #         self.val = x
 #         self.next = None
 
 class Solution:
     def deleteDuplicates(self, head):
         """
         :type head: ListNode
         :rtype: ListNode
         """
         dummy = ListNode(0)
         dummy.next = head
         node = dummy
         while node.next:
             next = node.next
             val = next.val
             if next.next and next.next.val == val:
                 next = next.next.next
                 while next and next.val == val:
                     next = next.next
                 node.next = next
             else:
                 node = node.next
         return dummy.next