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

2021-10-07 07:52:02 字數 1265 閱讀 7761

考點:鍊錶

題目描述

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

思路解析

快慢指標:快慢指標初始為頭節點。快指標先走k-1步,到達第k個節點。此時慢指標相對快指標是倒數第k個節點。此時快慢指標一起走,當快指標到達最後乙個節點時,慢指標位於倒數第k個節點。

如k為3,則pa先走2步,先到第3個節點。pa、pb一起走。當pa到最後乙個節點時,pb到倒數第3個節點

c++實現

listnode* findkthtotail(listnode* plisthead, unsigned int k) 

else

return null;

}while(pa->next !=null)

return pb;

}

python實現

class solution:

def findkthtotail(self, head, k):

# write code here

if(head==none or k<=0):

return none

pa=head

pb=head

for i in range(k-1):

if pa.next != none:

pa=pa.next

else:

return none

while(pa.next !=none):

pa=pa.next

pb=pb.next

return pb

方法2:python切片

class solution:

def findkthtotail(self, head, k):

# write code here

res=

while head != none: #最後乙個結點不為空,也要存起來

head=head.next

if len(res)

return none

return res[-k] #切片

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

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

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

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。關於鍊錶和陣列 1 建立乙個新陣列,遍歷鍊錶中的結點,將數值存入陣列中。輸出陣列中 k下標對應的值即可 class listnode def init self,x self.val x self.next none class solution de...

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

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思想 利用兩個指標,第乙個指標f到達k之後,新建乙個指標sencond,遍歷最後乙個時sencond則為倒數第k個結點 coding utf 8 class listnode def init self,x self.val x self.next n...