在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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
if pHead == None or pHead.next == None:
return pHead
else:
# 新建一个节点,防止头结点被删
newHead = ListNode(-1)
newHead.next = pHead
pPre = newHead
pNode = pHead
pNext = None
while pNode and pNode.next:
pNext = pNode.next
if pNode.val == pNext.val:
while pNext and pNode.val == pNext.val:
pNext = pNext.next
pPre.next = pNext
pNode = pNext
else:
pPre = pNode
pNode = pNode.next
return newHead.next