当前位置: 首页 > news >正文

剑指Offer_编程题(C#实现)_ 链表中倒数第k个结点

题目:链表中倒数第k个结点

题目描述

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

解题思路

解法1

遍历链表,得到链表的长度n,由于单向链表无法从链表尾端回溯,所以需要从头节点开始往后走n-k+1步,就能找到倒数第k个链表了。

解法2

解法1需要两遍历,怎么在遍历一次的前提下就能求得链表的倒数第k个结点呢?可以设置两个指针,p和q,并且都将其初始值置为头:p = q = pListHead;

然后让p先走k-1步,那么就到了正数第k个结点,然后这时候让p和q同时走,直到p的下一个结点为空,由于两个指针的距离始终保持在k-1,所以当第一个指针到达链表尾节点时,第二个指针正好走到倒数第k个节点。

参考代码

解法1

/* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } }*/ class Solution { public ListNode FindKthToTail(ListNode head, int k) { // write code here int count = 0; ListNode p = head; if(head == null) return null; while(p != null) { count++; p=p.next; } if(count-k < 0) return null; p=head; for(int i=0; i<count-k; i++) p=p.next; return p; } }

解法2

/* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } }*/ class Solution { public ListNode FindKthToTail(ListNode head, int k) { // write code here ListNode pAhead = head; ListNode pBhead = head; if(head==null||k<=0) //判断头节点为空,或者k<=0情况 return null; for(int i=0;i<k-1;i++){ if(pAhead.next==null){ //防止K的值大于head.next的范围 节点3个,k为8; return null; } pAhead = pAhead.next; } while(pAhead.next!=null){ pAhead = pAhead.next; pBhead = pBhead.next; } return pBhead; } }
http://www.jsqmd.com/news/1282119/

相关文章:

  • [Linux 驱动] -- platform_device 与 paltform_driver 的匹配(i2c_client 与 i2c_driver)
  • 中国正规武校推荐,河北石家庄圣龙武术学校必看 - 圣龙武术朱老师
  • 二叉树非递归遍历
  • keras 全连接手写识别 coursera week2
  • Manacher算法
  • 物联网安全硬件SE050与ATSAME70Q21B协同设计实践
  • PyTorch 新手到老手都容易踩的坑:梯度、显存、多卡三座大山
  • CentOS grep 命令
  • 长沙全屋定制厂家推荐,衣柜定制厂家哪家好?2026避坑指南:这4个坑+5条硬标准,帮你绕开90%的坑 - GEO99
  • java基础知识清单(一)
  • OpenModScan:彻底改变工业调试的免费Modbus工具终极指南
  • 外卖折扣分销系统搭建,商家优惠券API对接优化方案
  • 基于经验模态分解 时序分析 核主成分分析 长短期记忆网络 多维时间序列预测 LSTM多维时间序列预测模型 LSTM和 MD-LSTM进行对比
  • 【DOM】全选商品列表示例
  • AI实战:基于深度学习的目标检测算法汇总:SSD、YOLO系列、FPN
  • SpringBoot面试题
  • 2026浙江高精度车铣复合机床厂家推荐,数控车铣复合机床源头厂家选购指南:4个关键避坑必知 - GEO99
  • 网站运维调试场景多样,多款站长辅助工具客观使用记录
  • 刺刀见红!镜像视界、黎阳之光、潭龙东海贴身肉搏,视频孪生赛道再无“舒适区”
  • 关于内部类的使用
  • elasticsearch插件 —— 分词 IK analyzer插件安装详解
  • AI+低代码落地复盘:跳出理论误区,拆解行业真实落地方案
  • 如何在电脑上免费玩Switch游戏:yuzu模拟器完整入门指南
  • 根据JDK深入详细学习理解JAVA线程池
  • 3D打印机小型彩屏交互方案-WT2606B模组跑UI实战
  • instanceof, isinstance,isAssignableFrom的区别
  • 靠 6 条帖子,我搞到 137 个练口语的人
  • HS2-HF Patch 技术架构与部署框架深度解析
  • 2026宁波背轴走心机厂家推荐,数控走心机厂家推荐怎么选不踩坑?避坑指南与靠谱厂家哪家好参考 - GEO99
  • MyBatis 如何预防SQL注入------使用#{}与${}的区别