问题

单向链表如果要找某一元素或者遍历链表,只能从头节点开始,所以如果我们用普通方法查找倒数第K个数,要分两步:第一步:先遍历链表中元素的个数,第二步:从头开始遍历,遍历到链表个数-k个数;

用两个指针来快速找到倒数第k个数

package com.tangbaobao.baidu;import java.time.temporal.Temporal;
import java.util.Scanner;/*** 链表找倒数第k个数** @author 唐学俊* @create 2018/04/17**/public class FindNumResverseOrder {/*** 节点内部类*/class Node {private Node nextNode;private int value;}/*** 设置头节点*/private Node head;public static void main(String[] args) {FindNumResverseOrder order = new FindNumResverseOrder();//添加数据order.add(1);order.add(2);order.add(3);order.add(4);order.add(5);Scanner scanner = new Scanner(System.in);System.out.println("你要查找链表中倒数第几个数?");int k = scanner.nextInt();int num = order.getNum(k);System.out.println(num);}public void add(int i) {//定义新节点,并设置值Node newNode = new Node();newNode.value = i;//第一次添加if (head == null) {head = newNode;} else {//设置中间节点Node temp = head;//非第一次添加while (temp.nextNode != null) {temp = temp.nextNode;}temp.nextNode = newNode;}}/*** 代码说明:没有做越界分析,所有测试用例都基于给定范围** @param k* @return*/public int getNum(int k) {//定义连个指针,开始都指向头节点Node nodej = head;Node nodei = head;//先移动k步for (int l = 0; l < k - 1; l++) {nodej = nodej.nextNode;}//i,j同时后移,直到j到达最后一个元素,这是i所指向的元素就是第倒数第k个while (nodej.nextNode != null) {nodei = nodei.nextNode;nodej = nodej.nextNode;}return nodei.value;}
}

时间复杂度:o(n)
空间复杂度:o(1)

单向链表中查找倒数第K个数相关推荐

  1. c语言单链表删除倒数第k个数,在单链表中删除倒数第k个节点

    实现方式很多,在这里只说两种实现方式.看不懂时候,大家可以画画图,对理解为什么很有帮助. 第一种方式: 1.首先判断K值和链表是否为空,如果k<=0,或链表为空,直接返回head: 2.满足上面 ...

  2. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  3. python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法

    本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...

  4. 剑指 Offer 22(链表4).链表中的倒数第k个结点

    剑指 Offer 22(链表4).链表中的倒数第k个结点 问题描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链 ...

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

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

  6. python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 假设链表中的节点数大于等于k个,那么一定会存在倒数第k个节点,首先使用一个快指针先往前走k步,然后两个指针每次走一步,两个指针之间始终有k的 ...

  7. 链表问题2——在双链表中删除倒数第K个节点

    题目 实现一个函数,可以删除双链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 双链表的思路与前一篇文章单链表的思路基本一致,注意last指针 ...

  8. 链表问题2——在单链表中删除倒数第K个节点

    题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...

  9. 在单链表和双链表中删除倒数第K个节点

    题目:分别实现两个函数,一个可以删除单链表中倒数第k个节点,另一个可以删除双链表中倒数第k个节点 要求:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1) ""& ...

最新文章

  1. 南陵中学2021高考成绩查询,南陵中学2019高考成绩喜报、一本二本上线情况
  2. 学习Java编程到底是为了什么,该具备什么样的能力
  3. Android 应用框架
  4. c语言全段字符的类别,言语理解规律整理d0c.doc
  5. mysql error 1114,mysql error 1114 table is full 处理分享
  6. VUE中 ref $refs 使用详解,扩展到$parent 、$children 的使用
  7. ipython notebook超级好用
  8. maven 单独构建多模块项目中的单个模块
  9. 一个 ARK工具: XueTr类似ICEWORLD
  10. 风波中的滴滴:离无人驾驶落地还有多远?
  11. 工作方式~使用寄存的实现方式~
  12. G120变频器如何通过BOP-2操作面板或Startdrive复位出厂参数?
  13. 计算机系统概论(原书第2版)部分课后习题答案(第三章)
  14. 计算机开机后 打不开软件,电脑开机后软件打不开怎么回事
  15. java实现中文数字与阿拉伯数字互相转换
  16. 创业路上之谢谢周爱民
  17. 序列标注 | (4) Hierarchically-Refined Label Attention Network for Sequence Labeling
  18. java中暴力是啥方法_[蓝桥杯][历届试题]回文数字 中规中矩的暴力方法(Java代码)...
  19. matlab均值方差模型,马科维茨均值方差模型的Matlab实现(10页)-原创力文档
  20. 记录人生第一个网站,以及相对路径图片无法显示的问题

热门文章

  1. 真彩色图像数据量 计算_计算机基础:图形、图像相关知识笔记
  2. 身体这些部位不舒服的时候,你知道意味着什么吗?
  3. 以太坊:在合约里调用指定地址的另一已部署合约
  4. 中国石油大学(北京)本科毕业论文答辩和论文选题PPT模板
  5. 计算机英语 教学大纲,计算机英语教学大纲
  6. 直接在云端服务器里面修改代码,深夜折腾:实现云端服务器代码与Git库同步
  7. JPEG算法解密 JPEG原理详解 (转载 by jinchao)
  8. 视频编解码之常见GOP结构
  9. 如何给自制的微信小程序设置一个密码
  10. [UOJ311]积劳成疾