返回一个链表的倒数第k个节点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
如果该链表长度小于k,请返回空。
题目分析
首先明确,一个链表中,倒数的+顺数的长度等于链表总长度,所以可以设置两个指针,一个先走K步,剩下的到链表的末尾要走的步数就是倒数第k个节点,需要从头开始走的步数。所以我们可以画出如下图
根据这个逻辑,我们设置两个指针,其中一个先走k步(这个k就是我们要求的倒数第几个的这个几),然后在用一个指针同时跑,然后第一个走到结尾,第二个指针的位置对应的数字就是我们要求的
public ListNode FindKthToTail (ListNode pHead, int k) {
// write code here
//定义一个开始指针
ListNode first = pHead;
for(int i = 0;i<k;i++){
if(first==null){
return first; //这里是如果节点为空就返回first,这个时候的first就是空
}
first = first.next;
}
//定义第二个指针
ListNode second = pHead;
//同时移动,当第一个指针移动到最后,第二个指针的位置就是我们要求的值
while(first!=null){
first = first.next;
second = second.next;
}
return second;
}
本文来自博客园,作者:Diamond-fz,转载请注明原文链接:https://www.cnblogs.com/fzstudy/p/14665033.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下