給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.
說明:給定的 n 保證是有效的。
高階:你能嘗試使用一趟掃瞄實現嗎?
1、獲得表頭,通過迴圈遍歷鍊錶,建立乙個容器將節點儲存。
2、要刪除某節點,此處假設為b,即將前乙個節點a的next更改指向b的下乙個節點c。
3、因此考慮特殊情況:
3.1 刪除表頭 3.2 刪除表尾
class
solution
:def
removenthfromend
(self, head: listnode, n:
int)
-> listnode:
ls=beifen=head
while
true
:if head.
next
==none
:break
head=head.
next
iflen
(ls)==1
: beifen.val=
''return beifen
if n!=
1and n!=
len(ls)
: ls[
-n-1].
next
=ls[
-n+1
]return beifen
elif n==1:
ls[-2
].next
=none
return beifen
elif n==
len(ls)
:return ls[
1]
執行用時 :40 ms, 在所有 python3 提交中擊敗了91.39%的使用者#我的方法使得必須考慮第三種特殊情況,即鍊錶只有1個節點。
力扣 刪除鍊錶的倒數第N個節點
題目要求 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?解題思路 方法一 兩次遍歷演算法 首先分析問題,問題可...
力扣 刪除鍊錶的倒數第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?思路 定義乙個虛擬頭節點x,為能刪除頭節點。定義快慢指標,快慢指...
LeetCode 019 刪除鍊錶的倒數第N個節點
019 刪除鍊錶的倒數第n個節點 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.方法 雙指標法 思路 定義兩個指標指向頭節點,將第乙個指標移動n個節點,然後兩個一起移動,直到第...