链表例题2:链表的倒数第k个节点是多少
解题思想:
1.创建一个结点类(为后面实现链表做基础)
2.创建一个查询倒数元素的方法
3.使用快慢指针的思想(主要的部分)
图中的表示的是查询倒数第k个结点的操作:
创建一个快慢指针后pre(慢指针)指向的第一个结点,在通过k的具体数值来移动p1(快指针),让它们之间包含k个结点(包括它们自身),然后不断的将p1和pre向后移动,直到p1移动到最后一个结点的,此时pre所指的即为倒数第k个的结点。
代码如下:
1 public class InquiryNode { 2 3 public static void main(String[] args) { 4 int arr[]= {1,2,3,4,5,6,7,8}; 5 Node head=new Node(); 6 //将数组存储数据用链表串起来 7 Node p=head; 8 for(int i=0;i<arr.length;i++) 9 { 10 p.next=new Node(arr[i]); 11 p=p.next; 12 } 13 14 System.out.println(Inquiry(head,5)); 15 16 } 17 18 //查找倒数第K位结点值的方法 19 public static Object Inquiry(Node node,int k) 20 { 21 if(k<=0) 22 { 23 return null; 24 } 25 26 Node pre=node.next; //慢指针 27 Node p1=node.next; //快指针 28 //拉开快慢指针的距离 29 int count=1; 30 while(p1!=null&&count<k) 31 { 32 p1=p1.next; 33 count++; 34 } 35 //如果k大于元素个数之和则为空 36 if(p1==null) 37 { 38 return null; 39 } 40 //将快指针移动到最后一位,同时慢指针也以相同的进度跟上 41 while(p1.next!=null) 42 { 43 pre=pre.next; 44 p1=p1.next; 45 } 46 //慢指针所指的就是倒数第K的元素 47 return pre.data; 48 } 49 50 } 51 52 //结点类 53 class Node{ 54 Object data; 55 Node next; 56 57 public Node() 58 { 59 60 } 61 public Node(int data) 62 { 63 this.data=data; 64 } 65 }
结果:
转载于:https://www.cnblogs.com/LgxBoKeYuan/p/10202270.html
链表例题2:链表的倒数第k个节点是多少相关推荐
- 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值.注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k ...
- 剑指offer:面试题22. 链表中倒数第k个节点
题目:链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1 ...
- 链表中倒数第k个节点
链表中倒数第k个节点 [题目]: 输入一个链表,输出该链表中倒数第k个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6.这个链表的倒数第 3 个节点是值为 4 ...
- 链表问题2——在双链表中删除倒数第K个节点
题目 实现一个函数,可以删除双链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 双链表的思路与前一篇文章单链表的思路基本一致,注意last指针 ...
- 链表问题2——在单链表中删除倒数第K个节点
题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...
- 链表中倒数第k个节点 1
题意: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...
- python代码找到链表的倒数第K个节点并打印
python代码找到链表的倒数第K个节点并打印 在计算机科学中,链表是数据元素的线性集合,其顺序不是由它们在内存中的物理位置决定的.相反,每个元素指向下一个元素.它是一种数据结构,由一组节点组成,这些 ...
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...
- 数据结构——求单向链表的倒数第K个节点
首先,对于链表来说,我们不能像数组一样直接访问,所以我们想到要求倒数第K个节点首先要知道最后一个节点. 然后从最后一个节点往前数K个. 最后得到想要的值. 但是这是不对的,为什么呢?因为题目给出的是单 ...
最新文章
- pushpop指令的操作数必须是字操作数_指令格式
- mac安装mysql8.0.11_【MySQL】Mac安装MySQL(V8.0.15)蹚坑记录
- 线程里面的yield();方法(让出线程)
- vscode安装设置go
- JQuery Mobile 手机显示页面偏小
- GDCM:基本应用程序级别机密性配置文件测试程序
- JAVA:说说你对序列化的理解
- 如何实现二次抛异常时保存第一次异常的详细信息?
- bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然
- 英特尔显示器音频_联想YOGA C940英特尔移动超能笔记本评测:小身材也有大能量...
- 双线性插值实现图像放大算法 matlab,FPGA/verilog实现双线性插值图像放大
- 羊车门问题python程序_羊车门问题
- VS2010在加载项目时,提示无法打开项目文件, 此安装不支持该项目类型的解决方法
- linux 入门 及一些常用命令及常用软件安装
- mkv视频怎么转成mp4?
- 交换机和路由器的关系
- 订阅号服务器消息推送数量,如何解决微信公众号一个月只能发4次消息的问题...
- 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试
- 奇富科技语音论文入选国际顶会INTERSPEECH 2023
- 多线程之死锁介绍及预防
热门文章
- 20145237 Exp2 后门原理与实践
- centos yum 安装
- redis info 信息
- [读书]设计模式:享元模式
- ITAA学员的经典对白
- 解决问题--java.lang.ClassNotFoundException -- redis抛出
- 我私藏的一个超级无敌好用的 Java 工具类库
- 参考:创业公司搭建自己的技术架构
- 用python编程、假设一年期定期利率_《Python程序设计》题库.pdf
- bzoj3625:[Codeforces Round #250]小朋友和二叉树