Leetcode 19 刪除第n個節點

2021-10-09 09:14:59 字數 815 閱讀 4132

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

leetcode 19 刪除第n個節點

面試中遇到的乙個題,但是面試中太緊張,主要的邏輯其實很簡單,核心部分即找到第k個節點並跳過. 沒做100%準確,最重要的還是熟練度不夠,在處理邊界條件的時候,沒有給出有效的解答

比較有效的即使用雙指標方法,設定快指標先到k的位置,然後慢指標從頭開始.數學上的理解很簡單,倒數k,假設鍊錶長度n,則倒數k的位置即n-k,所以如果先執行快指標的時候,到k,剩下可以執行的步驟即n-k,慢指標等待快指標執行完,即到達 n-k,執行listnode.next = listnode.next.next這個跳過程式即可

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

while

(nullhead.next != null)

newln.next = newln.next.next;

return head;

}}

但是上述情況容易存在乙個問題,即倒數的時候恰好為頭節點的時候,會出現溢位的情況,所以在此處,新建乙個啞節點即可,避開這種問題

class

solution

while

(fast != null)

slow.next = slow.next.next;

return dummy.next;

}}

leetcode19 刪除倒數第n個節點

def removenthfromend self,head,n 定義兩個指標,表示兩個元素的間隔,間隔大小固定為n 1,兩個指標分別為pre,end pre head end head for in range n end end.next if end is none 需要刪除的節點為第乙個節點...

LeetCode 19 刪除倒數的第N個節點

一 題目 二 題目解答 首先我們先想到,既然是要刪除倒數第n個節點。那麼我們先一遍遍歷得到鍊錶的總長度,然後在根據n值,找到要刪除的前乙個節點,進行刪除就可以了。在這裡需要注意的是,為了避免鍊錶只有乙個節點,而這個節點要被刪除的情況,我們建立的指標最好是啞結點的。如下 class solution ...

Leetcode 19 刪除鍊錶的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...