鍊錶中倒數第k個節點 python

2021-10-01 14:06:16 字數 1353 閱讀 4141

#思路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 ...