82. 删除排序链表中的重复元素 II - 力扣(LeetCode)
题意:在一个有序链表中,如果一个节点的值出现不止一次,那么把所有等于此值的节点删除掉。
重点:有序链表,所以,一个节点的值不止一次出现,那他们必定相邻。
deleteDuplicates(head)即删除head作为开头的有序链表,值出现重复的节点。
什么时候需要递归?
# 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: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
if head.val != head.next.val:
head.next = self.deleteDuplicates(head.next)
else:
move = head.next
while move and head.val == move.val:
move = move.next
return self.deleteDuplicates(move)
return head