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