leetcode題目鏈結
題目要求:刪除鍊錶的倒數第n個節點
class
solution
:def
removenthfromend
(self, head: listnode, n:
int)
-> listnode:
len=
0 p = head
#遍歷一遍鍊錶,求出鍊錶長度
while p:
p = p.
next
len+=
1 indexx =
len-n
#p需要重新複製為煉表頭
p = head
#由於沒有頭節點,需要分情況討論
#如果是第乙個節點
if indexx==0:
return p.
next
#如果不是第乙個節點
else
:for i in
range
(indexx-1)
: p = p.
next
p.next
= p.
next
.next
return head
class
solution
:def
removenthfromend
(self, head: listnode, n:
int)
-> listnode:
#設定頭節點,方便統一第乙個元素的刪除
dummy = listnode(0)
dummy.
next
= head
p = dummy
q = dummy
#q指標先走n步
for i in
range
(n):
q = q.
next
# p和q 一起走
while q.
next
!=none
: p = p.
next
q = q.
next
p.next
= p.
next
.next
return dummy.
next
LeetCode 19 鍊錶(160)
1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...
鍊錶 LeetCode19刪除鍊錶中的第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?分析 看到這個問題,第一反應,先求長度,再找節點,看一下高階,有...
Leetcode 19 刪除鍊錶的第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...