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

2021-10-06 02:12:59 字數 746 閱讀 8553

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

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

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

設定虛擬節點 dummyhead 指向 head

設定雙指標 p 和 q,初始都指向虛擬節點 dummyhead

移動 q,直到 p 與 q 之間相隔的元素個數為 n

同時移動 p 與 q,直到 q 指向的為 null

將 p 的下乙個節點指向下下個節點

class

solution

:def

removenthfromend

(self, head:

'listnode'

,n):

dummy = listnode(0)

dummy.

next

=head

p1=p2=dummy

while n:

p1=p1.

next

n -=

1while p1.

next

: p1=p1.

next

p2=p2.

next

p2.next

= p2.

next

.next

return dummy.

next

參考資料:

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....