凡人解法,贵在好理解。
关键点是:当两个相邻的数值不相等的时候,递归调用。
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
#### 如果链表是None或者只有1个数值,返回它本身
if not head or not head.next:
return(head)
#### 到这里链表至少有2个数值
#如果前2个数值相同
if head.val==head.next.val:
#记录当前数值
temp=head.val
head=head.next
#删除相同的数值,直到遇到不同值
while head.next and temp==head.next.val:
head=head.next
#遇到不同值的时候递归调用
head=self.deleteDuplicates(head.next)
#如果前2个数值不同,递归调用
else:
head.next=self.deleteDuplicates(head.next)
return(head)