剑指Offer编程题-链表中倒数第k个节点
题目:链表中倒数第k个节点
题目描述:输入一个链表,输出该链表中倒数第k个结点。
解题思路
输入链表head和结点数k,定义一个结点a = head,head往后遍历k次之后,a也同时和head一起往后遍历,当head遍历完整个链表后,a指向的结点正好是倒数第k个结点。需要注意当k大于链表的结点数时要返回空值,我们通过k的自减控制a开始遍历的时间,正好在最后也可以通过k是否大于0判断k是否大于链表结点数。
实现
python
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self, head, k):
# write code here
if head == None or k <= 0:
return None
a = head
while(head):
if k <= 0:
a = a.next
head = head.next
k -= 1
return a if k<=0 else head