《剑指Offer》刷题之链表中倒数第k个结点
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
输入一个链表,输出该链表中倒数第k个结点。
如果该链表长度小于k,请返回空。 - 示例:
示例 1 :
输入:{1,2,3,4,5},1
返回值:{5}
- 代码1:
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self , pHead , k ):
if not pHead:
return None
left, right = pHead, pHead
while right and k > 0:
right = right.next
k -= 1
if k > 0:
return None
while right:
left = left.next
right = right.next
return left
- 算法说明:
建立快慢指针left
和right
;
让快指针先走k步,如果链表结束,但是没有走完k步,也就是k>0
返回空;
让快慢指针同时走,直到快指针结束,返回慢指针所在位置即可。