java 链表_Java版剑指offer编程题第14题--链表中倒数第k个结点

a3e93dcc99b8cc75077aba972da8a0f3.png

跟learnjiawa一起每天一道算法编程题,既可以增强对常用API的熟悉能力,也能增强自己的编程能力和解决问题的能力。算法和数据结构,是基础中的基础,更是笔试的重中之重。

  • 不积硅步,无以至千里;
  • 不积小流,无以成江海。

题目描述

Java版剑指offer编程题第14题--链表中倒数第k个结点: 输入一个链表,输出该链表中倒数第k个结点。

我的想法

  • 链表结构没有索引,不能像数组那样直接根据get(index)得到你想要的元素,只能用指针遍历链表,找到相等的了,就返回。如果要解决题目中的问题,需要考虑两点:
  • 首先,要用一个指针遍历一遍链表,获得链表的总结点数size
  • 知道了总节点数,那么倒数第k个结点实际上就是正数第(size-k+1)个结点。也就是说再用一个指针从前往后遍历到第(size-k+1)个结点就行了。
  • 等第一个指针走完了,第二个指针再开始行动,有点浪费时间,能否改变第二个指针的时间,使得第一个指针遍历完链表后,第二个指针恰好就走到了倒数第二个节点
  • 很简单呀,第一个指针先走k个节点,第二个指针就开始跟着走,这样当第一个指针遍历完链表后,第二个指针恰好走到倒数第k个节点

解题方法1

659353fc4b127b81e9b1c4161d04f578.png

代码测试

878b4c77390da12ccaf50e8cfb18107d.png
e2f0069aa460f52169647becd51d58f2.png

代码测试控制台输出结果

2ac5e62c23f6e344711c366f42f72248.png

总结

链表查找元素的题目,比较简单,其实也可以用空间换时间,将链表每个节点存到数组里面,按索引返回结点值,不过这里给出的节法更好,速度快,并且不会改变节点。

参考文献

[1]程杰. 大话数据结构. 北京:清华大学出版社, 2011.

更多

对我的文章感兴趣,点个关注是对我最大的支持,持续更新中……
关注微信公众号LearnJava,发现更多精彩!

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值