版权声明:本文为博主原创文章,未经博主允许不得转载。 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