链表中倒数第k个结点

题目描述

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

输入输出示例

输入:{1, 2, 3, 4, 5}, 1
返回值:{5}

解题思路

  1. 双指针
    在这里插入图片描述

代码示例

  1. 双指针方法
# 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值