給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。
返回刪除後的鍊錶的頭節點。
注意:此題對比原題有改動
示例 1:
輸入: head = [4,5,1,9], val = 5
輸出: [4,1,9]
解釋: 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.
示例 2:
輸入: head = [4,5,1,9], val = 1
輸出: [4,5,9]
解釋: 給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.
說明:題目保證鍊錶中節點的值互不相同
若使用 c 或 c++ 語言,你不需要 free 或 delete 被刪除的節點
思路:刪除鍊錶某個節點,需要額外記錄一下待刪除節點的前一節點,並且刪除頭節點在這裡單獨考慮。
(考慮一些特殊情況,如 頭節點、尾節點、不存在的val)
/**
* @param head
* @param val
* @return
*/var deletenode = function(head, val)
//刪除中間節點和尾節點
while(curr.val != val)else
}if(curr)else
return head;
};
2、**優化
我的提交的**執行用時較長,這裡對一些細節進行了改進,**變簡潔了並且執行用時變短了。
var deletenode = function(head, val)
let prev = head;
let curr = head.next;
//刪除中間節點和尾節點
while(curr && curr.val != val)
if(curr)
return head;
};
劍指18 刪除鍊錶的節點
題目 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。分析 刪除結點很簡單,只需要知道被刪除結點的前一結點即可,先求出前一結點,然後刪除即可。這裡給出兩種方法,建議使用第二種雙指標,這裡雙指標只需要將乙個指標去搜查被刪除的結點,另乙個指標跟著這個指標的後...
劍指offer18 刪除鍊錶節點
1.考慮輸入空鍊錶和乙個節點鍊錶 2.如果頭節點不重複,直接遞迴查詢重複 3.雙指標,進行判斷兩個節點是不是相等 coding utf 8 class listnode def init self,x self.val x self.next none class solution def dele...
劍指offer 18 刪除鍊錶的節點
描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。示例 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.常規思路 定義乙個暫時變數用來刪除節點...