剑指offer面试题【18.2】----删除链表中重复的的节点【Python】【单链表】【代码的完整性】

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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
        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

猜你喜欢

转载自blog.csdn.net/weixin_42702666/article/details/89307000