剑指offer18删除重复的链表

30次阅读

共计 536 个字符,预计需要花费 2 分钟才能阅读完成。

愿 python 的天堂里没有指针。

# -*- 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

正文完
 0