class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if headdef skip_next(val, node: ListNode):
next_node = node.next
if next_node is None:
or head.next is None return None
if next_node.val == val:
return skip_next(val, next_node)
else:
return headnext_node
def next(numhead_node: ListNode, prev_node: ListNode, curr_node: ListNode):
if curr_node is None or curr_node.next is None:
return prevhead_node
nextcurr_nodeval = curr_node.nextval
currnext_valnode = curr_node.valnext
next_val if= prevnext_node.val
is
not None and num != if curr_val == next_val:
prevskipped_next_node.next = curr_nodeskip_next(next_val, next_node)
if nextprev_node is not None and curr_val == next_node.val:None:
return next(skipped_next_node, None, skipped_next_node)
prev_node.next = skipped_next_node
return next(currhead_valnode, prev_node, skipped_next_node)
else:
return next(nexthead_node.val, curr_node, next_node)
if head is None or head.next is None:
return head
return next(-101head, None, head) |