输入一个链表,输出该链表中倒数第k个结点。
多种情况的考虑
-
链表为空
-
k大于链表的长度
解题思路
设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。
![](https://i-blog.csdnimg.cn/blog_migrate/e7a8e81bbd0c193d7bf4a55d4a8db5bf.png)
class Solution:
def FindKthToTail(self, head, k):
# write code here
if head==None:
return head
i = 0
p1=head
p2=head
while p1!=None and k>0:
p1 = p1.next
k-=1
if k>0:
return None
while p1 != None:
p1 = p1.next
p2 = p2.next
return p2