輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
其實這個解法和我們的上一題類似,就是使用乙個陣列來儲存每個節點,最後我們輸出第 len(list) - k 個節點即可
while node:
list
node = node.
next
# k比鍊錶長度大
if k >
len(
list):
return
none
return
list
[len
(list
)- k]
完整**
# 鍊錶中倒數第k個節點
# 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
# 鍊錶結構
class
listnode
:def
__init__
(self, x)
: self.val = x
self.
next
=none
# 列印鍊錶
defprintchain
(head)
: node = head
while node:
print
(node.val)
node = node.
next
class
solution
:def
findkthtotail
(self, head, k)
:if k <=
0or head ==
:return
none
node = head
list=[
]while node:
list
node = node.
next
# k比鍊錶長度大
if k >
len(
list):
return
none
return
list
[len
(list
)- k]
if __name__ ==
'__main__'
:# 建立鍊錶
l1 = listnode(1)
l2 = listnode(2)
l3 = listnode(3)
l4 = listnode(4)
l5 = listnode(5)
l1.next
= l2
l2.next
= l3
l3.next
= l4
l4.next
= l5
print
(solution(
).findkthtotail(l1,1)
)
第二種方式就是我們需要使用兩個指標,第乙個指標先走k步,然後兩個指標在同時行走,最後當第乙個指標到達終點的時候,第二個指標就是倒數第k個值。
完整**
class
solution
:def
findkthtotail
(self, head, k)
:if k <=
0or head ==
:return
none
list=[
] first = head
second = head
# 先讓第乙個節點走 k步
for i in
range(0
, k)
:# 判斷第乙個是否走完
if first ==
none
:return
none
first = first.
next
# 然後兩個節點在繼續走,當first走到頭的時候,second就是倒數第k個節點
while first:
first = first.
next
second = second.
next
return second
鍊錶中倒數第k個節點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。struct listnode方法 定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二...
鍊錶中倒數第k個節點
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。ac class solution def findkthtotail self,head,k write code here 將每個節點存在棧裡,選取stack中第k個值 stack while head head head.next if k len s...
鍊錶中倒數第k個節點
acwing打卡活動 劍指offer 打卡活動 周二第十題 鍊錶中倒數第k個節點 definition for singly linked list.public class listnode 思路 設列表總結點數為n,則n k 1 為該列表的倒數第k個節點 如 n 10,k 2,則 10 2 1 ...