力扣日記 019 刪除鍊錶的倒數第n個節點

2021-09-29 20:05:48 字數 1051 閱讀 3916

給定乙個鍊錶,刪除鍊錶的倒數第 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個節點,然後兩個一起移動,直到第...