19 刪除鍊錶的倒數第N個節點(利用遞迴特點)

2021-10-23 04:37:07 字數 876 閱讀 1201

1. 問題描述:

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

說明:給定的 n 保證是有效的。

高階:你能嘗試使用一趟掃瞄實現嗎?

2. 思路分析:

① 題目還是容易理解清楚的,因為要刪除的是倒數第n個節點,所以想到使用遞迴來解決,因為遞迴在求解的時候會層層返回,我們正是可以利用這個特點來解決這個問題,每返回一次那麼計算一次表示的是當前是第幾個節點,所以需要使用乙個全域性變數來記錄從後往前的時候當前返回的是第幾個節點,通過判斷是第幾個節點那麼我們可以比對需要刪除的目標節點,假如發現當前的節點是需要刪除的節點那麼直接返回遞迴呼叫結束的結果即可,因為返回到這一層的是當前節點的下乙個節點而這個節點正是需要刪除的所以直接返回下乙個節點即可,在節點連線的時候這個元素就被忽略掉了

② 當發現當前節點不是刪除的節點的時候,需要將當前節點的next指標域指向遞迴呼叫返回的下乙個節點即可,也就是將當前節點與當前節點之後的節點連線起來(每當遞迴方法之後那麼返回的結果是當前節點的下乙個節點)思路還是比較簡單的看一下**就比較清楚了

③ 使用遞迴這個層層返回的特點還是挺有好處的,特別是需要從後往前計算結果的那種但是常規的方法只能夠做到從前往右的話使用這個特點就非常方便了,並且遞迴不僅僅是可以從後面進行計算,也可以從前面進行計算,因為在遞迴的方法之前呼叫進行計算即可,遞迴方法之後呼叫就是從後往前了

3. **如下:

public class solution else

}}

19 刪除鍊錶的倒數第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?說實話,就我的水平而言感覺這道題坑點還真不少,先來我的乙個粗糙版...

19 刪除鍊錶的倒數第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?class solution def removenthfrom...

19 刪除鍊錶的倒數第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.給定的n保證是有效的。首先遍歷得出鍊錶的長度l,然後刪除第l n個節點 definition for singly linked list....