LeetCode笔记:82. Remove Duplicates from Sorted List II 的普通解法

凡人解法,贵在好理解。

关键点是:当两个相邻的数值不相等的时候,递归调用。
LeetCode笔记:82. Remove Duplicates from Sorted List II 的普通解法_第1张图片

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)

你可能感兴趣的:(LeetCode笔记)