剑指offer试题解读------链表中的倒数第k个数(python and c++)
题目描述
输入一个链表,输出该链表中倒数第k个结点。
分析
这道题的思路:创造一把尺子,尺子的长度为k,将尺子从链表中移动,当尺子移动到链表的末端,则尺子头部对应链表位置就是倒数第k个数
python代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self, head, k):
firstPoint = head
secondPoint = head # 创建两个变量点来生成我们需要的尺子
for i in range(k):# 通过循环移动两个点来生成标尺
if firstPoint ==None:# 如果链表的长度比k小,则需要返回none,判断当前的移动位置
return None
firstPoint = firstPoint.next
while firstPoint !=None:# 这里对标尺进行移动,直到移动到最后
firstPoint = firstPoint.next
secondPoint = secondPoint.next
return secondPoint# 返回标尺的末端即链表的倒数第k个数
# write code here