【剑指offer】15. 链表中倒数第k个结点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014568072/article/details/87462594

题目描述

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

思路

《剑指offer》P107
两个指针遍历的方法,但是注意到要考虑一下三种特殊情况:

  • 输入的头结点为空 => 返回空
  • k=0 => 返回空
  • k > 链表长度 => 返回空

code

class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        if not head:
            return head
        if k == 0:
            return None
        pre = head
        after = head
        while k > 0:
            after = after.next
            if not after:
                break
            k -= 1
        # 如果还未移动满k-1步但是after已经指向最后None节点
        # 说明k大于链表长度
        if k > 1 and not after:
            return after
        while after:
            pre = pre.next
            after = after.next
        return pre

拓展题目

【leetcode】876. 链表的中间结点
【leetcode】141. 环形链表
【leetcode】142. 环形链表II

猜你喜欢

转载自blog.csdn.net/u014568072/article/details/87462594