刪除鍊錶中與val值相等的節點,使用哨兵節點;哨兵節點廣泛應用於樹和鍊錶中,如偽頭、偽尾、標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空、永不無頭、簡化插入和刪除。
屬於簡單題
class
solution
:def
removeelements
(self,head,val)
: sentinel = listnode(0)
sentinel.
next
=head #設定哨兵節點,也就是dummy節點
pre,cur=sentinel,head
while cur:
#cur為none表明已經遍歷到最後乙個元素
if cur.val == val:
pre.
next
=cur.
next
#相不相等pre該怎麼分別操作,但是cur=cur.next不斷到下乙個節點
else
: pre=cur
cur=cur.
next
return sentinel.
next
時間複雜度o(n)空間複雜度o(1)
參考鏈結
203 移除鍊錶元素
刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5刪除結點的步驟 找到該結點的前乙個結點 進行刪除操作 三種方法 1.刪除頭結點時另做考慮 由於頭結點沒有前乙個結點 2.新增乙個虛擬頭結點,刪除頭結點就不用另做考慮 3.遞迴 演示 方法一...
203 移除鍊錶元素
刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5使用空表頭,就可以不用判斷單個節點的情況或多個相同節點的情況.使用空表頭 public listnode removeelementsdummy listnode head,int ...
203 移除鍊錶元素
優化 當要刪除的乙個或多個節點位於鍊錶的頭部時,事情會變得複雜。可以通過哨兵節點去解決它,哨兵節點廣泛應用於樹和鍊錶中,如偽頭 偽尾 標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空 永不無頭 簡化插入和刪除。class solution listnode pr...