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

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

题目描述

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


Solution

设置两个指正 fast,slow fast 先走 k1 步,当 fast 到达链尾时, slow 指向的正好时第 k 个结点。

Notes: 注意代码的鲁棒性,当输入空指针的处理,以及当 k 大于链表长度的处理,然后还有 k=0 时, for 循环的异常处理。


# -*- coding: utf-8 -*-
"""
Created on Thu Mar 22 20:36:04 2018

@author: Saul
"""

# -*- 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
        fast = slow = head
        if head is None:
            return
        if k == 0:
            return
        for i in range(k-1):
            if fast.next is None:
                return
            else:
                fast = fast.next
        while fast.next:
            fast = fast.next
            slow = slow.next
        return slow

你可能感兴趣的:(剑指offer)