剑指offer--面试题57:删除链表中重复的结点

来源:互联网 发布:淘宝专柜价是正品吗 编辑:程序博客网 时间:2024/06/04 18:52

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

python实现:

# -*- coding:utf-8 -*-# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    def deleteDuplication(self, pHead):        # write code here        if pHead is None:            return None        #先看头结点是否有重复        p = pHead        isDuplicated = False        while p and p.next:            if p.val==p.next.val:                isDuplicated = True                p = p.next            else:                if isDuplicated:                    pHead = p.next                    p = pHead                    isDuplicated=False                else:                    break                 if isDuplicated:             pHead = p.next                           if pHead is None:            return None                 p = pHead.next        pre = pHead        isDuplicated = False        while p and p.next:            if p.val == p.next.val:                isDuplicated = True                p = p.next            else:                              if isDuplicated:                    pre.next = p.next                    isDuplicated = False                else:                    pre.next = p                    pre = p                p = p.next        if isDuplicated:            pre.next = p.next        return pHead


0 0