剑指offer:链表中倒数第k个结点

因为没有系统地学过数据结构,所以需要多记录一些有关于数据结构的题目。

输入一个链表,输出该链表中倒数第k个结点。

链表的题目首先要考虑的就是快慢指针,显然这道题也可以用双指针做。
其次要考虑的就是各种边界问题。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def FindKthToTail(self, head, k):
        if k <= 0 or not head:
            return None
        left, right = head, head
        for i in range(k-1):
            if not right.next:
                return None
            right = right.next       #右指针从第k-1个数开始,这样下面的循环结束时后面就剩下k-1个结点
        while right.next:
            left = left.next
            right = right.next
        return left

你可能感兴趣的:(剑指offer:链表中倒数第k个结点)