劍指offer17 — 鏈表中倒數第k個結點
題目
輸入一個鏈表,輸出該鏈表中的倒數第k個結點
分析
設計快慢指針,先讓快指針往前跑k步,使快慢指針之間相差k步,然後再讓快慢指針一起往前跑,那麼當快指針跑到None的時候,慢指針所在的位置即爲倒數第k個結點。
注意考慮邊界條件
- k比鏈表長度小
- 定義兩個變量,變量之間間隔k,直到一個變量爲None即可。
- k比鏈表長度大
- 快指針在往前跑k步的時候肯定會遇到None,遇到None時直接return None 即可。
解
class Solution:
def FindKthToTail(self, head, k):
firstPoint=head
secondPoint=head
for i in range(k):
if firstPoint == None:
return None
firstPoint=firstPoint.next
while firstPoint != None:
firstPoint=firstPoint.next
secondPoint=secondPoint.next
return secondPoint