LeetCode 203 移除鍊錶元素

2021-10-02 16:05:15 字數 1002 閱讀 8238

刪除鍊錶中等於給定值 val 的所有節點。

示例:輸入: 1->2->6->3->4->5->6, val = 6

輸出: 1->2->3->4->5

方法:哨兵節點

如果刪除的節點是中間的節點,則問題似乎非常簡單:

選擇要刪除節點的前乙個結點 prev。

將 prev 的 next 設定為要刪除結點的 next。

當要刪除的乙個或多個節點位於鍊錶的頭部時,事情會變得複雜。

可以通過哨兵節點去解決它,哨兵節點廣泛應用於樹和鍊錶中,如偽頭、偽尾、標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空、永不無頭、簡化插入和刪除。

在這裡哨兵節點將被用於偽頭。

演算法:初始化哨兵節點為 listnode(0) 且設定 sentinel.next = head。

初始化兩個指標 curr 和 prev 指向當前節點和前繼節點。

當 curr != nullptr:

複雜度分析

時間複雜度:o(n),只遍歷了一次。

空間複雜度:o(1)。

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

curr = curr.next;

}return sentinel.next;

}}

LeetCode 203 移除鍊錶元素

刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5建立初始節點dummy和cur,cur等於dummy。再建立節點point等於head。然後point不為空時進入迴圈,如果point val等於val,那麼將point向後移動一步 如果...

LeetCode 203 移除鍊錶元素

題目 刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 筆記解析 刷題就 是個踩坑的過程,閃一下子卻很舒服,因為會有成長 坑點 1 注意有多個要刪除的節點鏈結 例子 1,2,6,6,6,3,4 解法 將三種類別分開討論,只要是cu...

leetcode 203 移除鍊錶元素

解題思路 方法一 1.新建乙個節點,遍歷鍊錶,如果值相等,連線到下乙個節點,原指標下移.public static listnode removeelements listnode head,int val listnode heada head listnode cur new listnode ...