剣指offer全集詳細python版-チェーンテーブルの重複するノードを削除

3089 ワード

タイトルの説明:ソートされたチェーンテーブルに重複するノードが存在します.チェーンテーブルの重複するノードを削除してください.重複するノードは保持されず、チェーンテーブルのヘッダポインタに戻ります.例えば、チェーンテーブル1−>2−>3−>3−>4−>4−>5の処理後は1−>2−>5である
考え方:
境界条件に注意します.
コード:
# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def deleteDuplication(self, pHead):
        # write code here
        if not pHead or not pHead.next:  
            return pHead
        if pHead.val == pHead.next.val:  
            pnode = pHead.next.next
            while pnode and pnode.val==pHead.val: #           pHead
                pnode = pnode.next
            return self.deleteDuplication(pnode)  #         
        else:
            pHead.next = self.deleteDuplication(pHead.next)
            return pHead