【剑指Offer】链表中倒数第k个节点 解题报告(Python)

【剑指Offer】链表中倒数第k个节点 解题报告(Python)

标签(空格分隔): LeetCode


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

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

Ways

这个题的做法大家应该都知道了,就是使用两个指针,走在前面的指针比走在后面的指针优先k-1步,这样当走在前面的指针走到头的时候,走在后面的指针正好到了倒数第k个节点。

需要注意的是代码的鲁棒性。有以下三点:

  1. 头结点不存在
  2. k为0
  3. 链表长度小于k

都要有合理的解决方法。fangfa

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

class Solution:
    def FindKthToTail(self, head, k):
        if not head or not k:
            return None
        left, right = head, head
        for i in range(k - 1):
            if not right.next:
                return None
            right = right.next
        while right.next:
            left = left.next
            right = right.next
        return left

Date

2018 年 3 月 11 日

你可能感兴趣的:(算法,牛客网,剑指offer)