#思路1:遍歷兩次鍊錶:倒數的第k個相當於正數的n-k+1個節點,可以先遍歷鍊錶獲得長度n,之後在重新遍歷鍊錶找到倒數的第k個節點。--需要遍歷兩次鍊錶
#思路2:遍歷一次鍊錶:兩個指標,第乙個先走k-1步,之後第二個指標開始從頭走,當第乙個指標走到鍊錶末尾的時候,第二個指標指向的地方就是倒數第k個節點
class
listnode
(object):
def__init__
(self, x)
: self.val = x
self.
next
=none
node1 = listnode(1)
node1.
next
= listnode(2)
node1.
next
.next
= listnode(3)
node1.
next
.next
.next
= listnode(4)
node1.
next
.next
.next
.next
= listnode(5)
deffindreck
(head, k)
:if k ==
0or head is
none
:return
none
p1, p2 = head, head
for i in
range
(k -1)
:if p1.
next
isnot
none
: p1 = p1.
next
else
:# 若k的長度大於鍊錶的長度,則返回空
return
none
while p1.
next
isnot
none
: p1 = p1.
next
p2 = p2.
next
return p2.val
print
(findreck(node1,4)
)#拓展:
#①求鍊錶的中間結點:定義兩個指標,同時出發,乙個一次走一步,乙個一次走兩步,當走的快的走到鍊錶末尾時,走的慢的指標指向的位置就是鍊錶的中間位置
#②判斷單向鍊錶是否形成了環形結構--定義兩個指標,同時出發,乙個一次走一步,乙個一次走兩步,若走的快的指標追上了走的慢的,說明鍊錶是環形的;若走的快的指標走到了末尾都沒追上走的慢的指標,那麼就不是環形的
鍊錶中倒數第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 ...