劍指offer 17 鍊錶中倒數第k個結點

2022-08-11 06:27:16 字數 1185 閱讀 3228

題目:

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

關於鍊錶和陣列:

1、建立乙個新陣列,遍歷鍊錶中的結點,將數值存入陣列中。輸出陣列中-k下標對應的值即可

class

listnode:

def__init__

(self, x):

self.val =x

self.next =none

class

solution:

deffindkthtotail(self, head, k):

#write code here

l =while head is

notnone:

head =head.next

if k > len(l) or k <= 0: #

沒有倒數第0個的說法,所以是k<=0

return

none

return l[-k]

2、python 設定兩個指標,p1,p2,先讓p2走k-1步,然後再一起走,直到p2為最後乙個 時,p1即為倒數第k個節點

class

solution2:

deffindkthtotail2(self, head, k):

if head is none or k <= 0: #

沒有倒數第0個的說法,所以是k<=0

return

none

#write code here

p1 =head

p2 =head

while k > 1: #

p2到第k-1個結點 停止

if p2.next is

notnone:

p2 =p2.next

k -= 1

else

:

return

none

while p2.next is

not none: #

p2到最後乙個結點停止

劍指offer17 鍊錶中倒數第k個結點

輸入乙個鍊錶,輸出該鍊錶中的倒數第k個結點 設計快慢指標,先讓快指標往前跑k步,使快慢指標之間相差k步,然後再讓快慢指標一起往前跑,那麼當快指標跑到none的時候,慢指標所在的位置即為倒數第k個結點。注意考慮邊界條件 k比鍊錶長度小 定義兩個變數,變數之間間隔k,直到乙個變數為none即可。k比鍊錶...

劍指offer(17) 鍊錶倒數第k個結點

考點 鍊錶 題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路解析 快慢指標 快慢指標初始為頭節點。快指標先走k 1步,到達第k個節點。此時慢指標相對快指標是倒數第k個節點。此時快慢指標一起走,當快指標到達最後乙個節點時,慢指標位於倒數第k個節點。如k為3,則pa先走2步,先到第3個節點。pa...

劍指offer 鍊錶中倒數第k個結點(鍊錶)

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。分析 兩個指標pointresult和pointend一起指向頭結點,然後根據k,移動pointend,使pointresult和pointend的距離為k 1。然後同時移動pointresult和pointend,當pointend指向最後乙個結點時,po...