LeetCode 203 移除鍊錶元素

2021-10-07 03:01:10 字數 928 閱讀 8200

在這個示例中,給定的val值是6,就將輸入鍊錶中的所有是6的節點給刪除了。

整體思路:

1、將這個鍊錶從頭到尾遍歷;

2、如果能找到值與val值相等的節點,就把該節點刪除。

當我們遍歷到需要刪除的節點之後,這時候已經不能刪除該節點了,所以,需要遍歷到需要刪除節點的前乙個節點的時候,才能把這個節點刪除。

因為想要刪除該節點,就必須對該節點前面的指標進行操作,也只有current在被刪除節點前乙個的時候,才能對該指標進行操作。

刪除的具體方式:cur.next = cur.next.next;

此方式表示當前指標的下乙個節點指向了當前指標的下下個節點,當遍歷這個鍊錶的時候已經遍歷不到當前指標的下個節點了,就相當於當前指標的下個節點已經被刪除了。

前面說到,當刪除頭節點的話是沒辦法刪除的,current只能在頭節點的前面,才可以刪除掉頭節點。

所以,我們需要乙個虛擬頭節點,把它放到頭節點的前面,並且,current從虛擬頭節點(dummyhead)開始遍歷。那麼,如果說頭節點的值就是題目給定的value的話,current就可以在這裡對頭節點進行刪除,所以,**中應該:cur = dummy。

尾部處理,也就是這個迴圈的終止條件。

首先,current是不需要遍歷到尾部節點的。如果尾部元素在是我們需要刪除的節點的話,current只要在倒數第二個位置,就可以對它進行刪除了。

在**中可以這樣判斷:cur != null && cu.next != null。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution else

}return dummy.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 ...