题目描述
输入一个链表,输出该链表中倒数第k个结点。
输入输出示例
输入:{1, 2, 3, 4, 5}, 1
返回值:{5}
解题思路
- 双指针
代码示例
- 双指针方法
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pHead ListNode类
# @param k int整型
# @return ListNode类
#
class Solution():
def FindKthToTail(self, pHead, k):
# 定义两个指针指向头结点
firstPoint = pHead
secondPoint = pHead
# 循环k次 让firstPoint指针先走k次,
# 走向正数第k个结点停止,secondPoint暂时不动,
# 即firstPoint与secondPoint保持k个结点的间隔
for i in range(k):
# 考虑边界条件:链表本身的长度就不足k的情况
# 也就是firstPoint还没走够k个结点就指向了None
if firstPoint == None:
return None
# firstPoint向前移动
firstPoint = firstPoint.next
# 当firstNode循环遍历到正数第k个结点时,开始与secondPoint共同向前移动,
# 直到firstNode指向空
while firstPoint != None:
# firstPoint走一步 secondPoint走一步
firstPoint = firstPoint.next
secondPoint = secondPoint.next
# 当firstPoint指向None时,退出循环,返回值
# 此时secondPoint指向的结点就是所找的链表中的倒数第k个结点
return secondPoint