1 # -*- coding:utf-8 -*-
2 # class ListNode:
3 # def __init__(self, x):
4 # self.val = x
5 # self.next = None
6 """没有三个指针解决不了的问题"""
7 class Solution:
8 def deleteDuplication(self, pHead):##最好以原链表指针为输出
9 # write code here
10 pPre = None
11 pCur = pHead#给链表加个指针
12 pNext = None
13 while pCur != None:
14 if pCur.next != None and pCur.val == pCur.next.val: #如果不到尾节点,并且当前指针节点与下一节点数值相等时
15 pNext = pCur.next#更新next指针
16 while pNext.next != None and pNext.next.val == pCur.val: #当next指针没到尾节点,且next下一节点数值与当前节点值相等时
17 pNext = pNext.next #一直更新next指针
18 if pCur == pHead: #处理第一个节点就是重复节点的情况
19 pHead = pNext.next #直接将原链表pHead指针后移到一段重复的节点之后
20 else:
21 pPre.next = pNext.next #如果头结点不是重复节点,则移动pre指针
22 pCur = pNext.next #更新当前指针到一段重复节点之后节点
23 else: #更新前指针pre到现指针cur上
24 pPre = pCur
25 pCur = pCur.next #更新当前指针cur
26 return pHead