题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表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): # 第一步先检测一下是不是空的或者是不是只有一个 if pHead is None or pHead.next is None: return pHead # 第二步因为防止第一个就是重复的节点,所以创作一个新的头节点。 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