解决方法:

使用快慢指针,慢指针先不动,快指针先走k-1步,然后两个指针一起以同样的速度走。当快指针到达终点时,慢指针正好停留在倒数第k-1个节点。因为它们之间的距离始终保持k-1。

代码如下:

package com.guigu.LinkedListDemo;public class SpeedAndSlow {public static void main(String[] args) {// 创建一个单链表LinkedList list = new LinkedList();HNode hNode1 = new HNode(1, "tom");HNode hNode2 = new HNode(2, "jack");HNode hNode3 = new HNode(3, "simth");HNode hNode4 = new HNode(4, "cls");list.add(hNode1);list.add(hNode2);list.add(hNode3);list.add(hNode4);// 遍历链表list.list();System.out.println();int k = 3;HNode lock = getBackwardsK(list, k);System.out.printf("倒数第%d个节点是%s", k, lock.name);}public static HNode getBackwardsK(LinkedList list, int k) {HNode speed = list.head; // 定义一个快指针,初始化为headHNode slow = list.head; // 定义一个慢指针,初始化为head// 当快指针走到链表尾的时候退出while(speed.next != null) {if(--k > 0) { // 让快指针先走k-1步speed = speed.next;}else {// 快指针和慢指针一起走speed = speed.next;slow = slow.next;}}// 此时慢指针所在的位置就是倒数第k个节点if(k > 0) {return null;}return slow;}
}

运行结果:

【新浪面试题】如何技高一筹解决查找单链表中的倒数第k个结点相关推荐

  1. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  2. 大数据面试之新浪面试题

    大数据面试之新浪面试题 学长1 一面 1)自我介绍 叫什么名字,来自哪里,本科哪个学校,硕士哪个学校,大数据做了多长时间,对Hadoop生态圈以及Spark生态圈中的哪些技术比较了解(很简单的一句就带 ...

  3. 【融博笔试题】查找单链表倒数第k个结点的值

    继华赛之后,又一次倒在面试门前.基础不扎实就是不行啊! 下来做完这道题,顺便复习单链表.代码如下: //------------------------------------------------ ...

  4. [剑指offer]面试题15:链表中倒数第k个结点

    面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...

  5. 【 C 】在单链表中插入一个新节点的尝试(二)

    在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...

  6. 【 C 】在单链表中插入一个新节点的尝试(一)

    根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...

  7. python链表删除尾部节点_python单链表中如何查找和删除节点?

    在之前的文章[python单链表中如何插入和输出节点?]中给大家介绍了单链表是什么,以及如何进行添加节点.输出所以节点.下面本篇文章给大家介绍如何查找和删除节点,希望对大家有所帮助. 如何从单链表中查 ...

  8. C语言 单链表查找出倒数第,查找单链表倒数第k个元素

    查找单链表倒数第m个结点,要求时间复杂度为O(n).(提示,使用双指针) 解题思路: 常规思路为先获取链表的长度N,然后返回N-k+1位置处的结点即可.但是中需要遍历两次链表. 我们使用另一种算法,设 ...

  9. 在带头结点单链表中查找最大值,将其与最后一个元素交换(交换值)

    [问题描述] 在带头结点单链表中查找最大值,将其值与最后一个元素交换,输出交换后的单链表各元素. [输入形式] 循环输入若干个整数,以字母结束输入,建立带头结点的单链表. [输出形式] 输出最大值与最 ...

最新文章

  1. 如何在客户端发送ajax请求,ajax - 从服务器(nodejs)发送数据到客户端(ajax请求)
  2. hadoop 伪分布模式
  3. batchnorm and relu_日本AND荷重传感器
  4. 高通首次演示基于3GPP的5G新空口连接 有望成为全球标准
  5. SpringBoot源码篇:Spring5内置tomcat实现code-based的web.xml实现
  6. cocos creator入门教程(十八)—— creator_Director对象与资源加载策略
  7. 基于java的飞机大战雷电游戏的开发与设计#毕业设计
  8. 2018.9.10 工作日志 猎宝行动
  9. 动环监控系统的服务器配置,动环监控系统服务器维护
  10. 强制使用ie浏览器使用最高版本
  11. ps切图的零散小知识
  12. 什么是庖丁解牛的思维?
  13. 16天记住7000考研单词(第一天)
  14. python密码游戏
  15. nginx配置域名访问/禁止ip访问
  16. 并查集——银河英雄传说
  17. 联想台式修复计算机,联想台式电脑如何一键恢复出厂设置
  18. 如何把pdf文件转换成eps文件
  19. win10系统删除右键菜单新建中多余选项的解决方案
  20. python中average什么意思_在Python3 numpy中mean和average的区别详解

热门文章

  1. [USF-XSim-62] ‘elaborate‘ step failed with errors.[Vivado 12-4473] Detected error while running sim
  2. 关于解决webdriver更新后pycharm仍然报错版本不对的问题
  3. 何金昌内增高鞋 专业打造专属时尚范儿网厄瓜多尔1季度皮革生产价格指数涨幅明显
  4. 办公:Excel 非规律合并单元格自动填充序列
  5. Oracle高级查询之over(partition by...) 分组排序
  6. php scada,监控系统SCADA软件—KingSCADA
  7. 蘑菇云matlab程序,貂蝉搞怪去衣福利图片欣赏(图文)
  8. 2021宿迁所有高中高考成绩查询,宿迁市“赫赫有名”的4所高中,高考成绩说话,不愧是211后援团...
  9. 老外也会玩抖音,借助TikTok引爆图书销量
  10. 小米fortnite_“ Fortnite”发行商Epic Games希望从内部改变App Store业务 杂色的傻瓜...