劍指Offer.面試題18.刪除連結串列中重複的節點
阿新 • • 發佈:2018-12-13
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5
思路:
設定三個指標。一個pre用於構建返回連結串列,一個p用於前移,一個nex用於比較當前值是否與p值相等。
程式碼:
class Solution: def deleteDuplication(self, pHead): # write code here if pHead==None or pHead.next==None: return pHead newhead=ListNode(-1) newhead.next=pHead pre=newhead p=pHead nex=None while p!=None and p.next!=None: nex=p.next if p.val==nex.val: while nex!=None and nex.val==p.val: nex=nex.next pre.next=nex p=nex else: pre=p p=p.next return newhead.next
分析:
只需要掃描一遍即可。