題目描述
在一個排序的鏈表中,存在重復的結點,請刪除該鏈表中重復的結點,重復的結點不保留,返回鏈表頭指針。 例如,鏈表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