給定乙個鍊錶,刪除鍊錶的倒數第 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 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...