python实现剑指offer删除链表中重复的节点

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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):
        # 第一步先检测一下是不是空的或者是不是只有一个
        if pHead is None or pHead.next is None:
            return pHead
        # 第二步因为防止第一个就是重复的节点,所以创作一个新的头节点。
        first = ListNode(-1)
        # 因为需要两个指针,一个指着重复结点上一个结点,一个指着重复结点后一个值。
        first.next = pHead
        last = first
        while pHead and pHead.next:
            if pHead.val == pHead.next.val:
                val = pHead.val
                while pHead and val == pHead.val:
                    pHead = pHead.next
                last.next = pHead
            else:
                last = pHead
                pHead = pHead.next
        return first.next

猜你喜欢

转载自www.cnblogs.com/tianqizhi/p/9646868.html