劍指offer(18)刪除重複的鏈表

願python的天堂裏沒有指針。node

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteDuplication(self, pHead):
        # 前驅結點指針
        pre_node = None
        # 當前節點指針
        p = pHead
        while p:
            # 下一個節點的指針
            next_node = p.next
            # 若是下一個節點存在,並且當前節點的值等於下一個節點的值,則須要進行刪除操做
            if next_node and p.val == next_node.val:
                # 須要刪除的值,用於刪除連續的重複值
                dup_value = p.val
                # 連續刪除,把next_node指針後移
                while next_node and next_node.val == dup_value:
                    next_node = next_node.next
                # 刪除的點爲頭節點
                if not pre_node:
                    pHead = next_node
                # 將前驅節點鏈接到下一個不重複的值上
                else:
                    pre_node.next = next_node
                # 運算後移
                p = next_node
            else:
                pre_node = p
                p = p.next
        return pHead
相關文章
相關標籤/搜索