# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head:
return head
dummy = ListNode(0,head)
pre,f = dummy,head
while f:
if f.next and f.val == f.next.val:
# skip all duplicates
while f.next and f.val == f.next.val:
f = f.next
# f
pre.next = f.next # case1: f.next = None case 2: 333pre ->44
# here pre did not choose to move forward, just try to point at posible next stop, which is f's next stop
else:
pre = pre.next
f = f.next
return dummy.next