在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶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
ifnot phead:
return
none
res = listnode(phead.val -1)
res.
next
= phead
p, q = res, phead
while q and q.
next
:if q.val != q.
next
.val:
p = q
q = q.
next
else
:while q.
next
and q.val == q.
next
.val:
q = q.
next
q = q.
next
p.next
= q return res.
next
遞迴求解:# -*- coding:utf-8 -*-
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
:def
deleteduplication
(self, phead)
:# write code here
ifnot phead or
not phead.
next
:return phead
if phead.val != phead.
next
.val:
phead.
next
= self.deleteduplication(phead.
next
)else
:# 如果相等那麼找第乙個不等的節點
node = phead.
next
while node and node.val == phead.val:
node = node.
next
return self.deleteduplication(node)
return phead
劍指offer56 刪除鍊錶中的重複結點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路1 用乙個set來記錄重複的結點 class solution listnode new phead newlistnode 1 這個操作主...
劍指offer56 刪除鍊錶中重複的節點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 注意如果是頭結點的判斷 另外,每次 next的時候都需要判斷當前節點是否為空 struct listnode class solution 如果...
劍指offer 56 刪除有序鍊錶中的重複結點
56.刪除有序鍊錶中的重複結點 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 借助輔助頭結點,可避免單獨討論頭結點的情況。設定兩個結點 pre 和 cur,當 cur 和 cur.next ...