剑指offe55--链表中环的入口结点
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
做这个题之前,我们应该先明白链表有环是什么的样的情况,理解的什么链表中有环的样子,我们就可以来理解这个题的思路的。这个题分两步:
1:先定义两个节点p1,p2,分别指向链表的头结点,我们让p2每次移动两个节点,让p1每次移动一个节点,如果链表中有环,p1肯定会遇到p2,p1==p2,,如果链表长度为n,实际上,p1==p2的时候,p2比p1多走了kn步,这里可以通过画图来理解。这样我们就找到了p1和p2相遇的节点。
2,当p2==p1,我们让p2再次指向头结点,然后再次让p1和p2每次移动一个节点,直到相遇,此时便是环的入口处。
/*public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}
}
*/
public class Solution {public ListNode EntryNodeOfLoop(ListNode pHead){ListNode p1=pHead,p2=pHead;while(p2.next!=null&&p2.next.next!=null) {p1=p1.next;p2=p2.next.next;if(p1==p2) {p2=pHead;while(p1!=p2) {p1=p1.next;p2=p2.next;}return p1;}}return null; }
}
剑指offe55--链表中环的入口结点相关推荐
- 剑指Offer——链表中环的入口结点
题目描述: 一个链表中包含环,请找出该链表的环的入口结点. 分析: 设置两个指针p1,p2, 两个指针都从链表的头部开始走,不过p1每次走一步,p2每次走两步. 直到相遇的时候,p2走的长度是p1的两 ...
- python数据结构剑指offer-链表中环的入口结点
例题 描述 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null. 数据范围: n\le10000n≤10000,1<=结点值<=100001<=结点值& ...
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...
- 链表中环的入口结点 python_【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!...
最近,在GitHub上有位id为imhuay的热心人带头建立了一个关于国内知名互联网企业笔试和面试经验的资源库,光从名称上就能看出其内容有多丰富:<2018/2019/校招/春招/秋招/算法/机 ...
- 链表2--JZ25复杂链表的复制JZ36两个链表的第一个公共结点JZ55链表中环的入口结点JZ56删除链表中重复的结点
JZ25复杂链表的复制 >>点击此链接 JZ36两个链表的第一个公共结点 题目描述 输入两个无环的单链表,找出它们的第一个公共结点.(注意因为传入数据是链表,所以错误测试数据的提示是用其他 ...
- 剑指offer:链表中环的入口结点
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 解题 快慢指针,fast走两步,slow走一步,当他们相遇时,fast走了一圈环,设环为n个节点,此时slow走的 ...
- 剑指offer(C++)——链表中环的入口结点
代码如下: struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {} };/*思路:设 ...
- 剑指offer之链表中环的入口结点
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 解题思路 利用一个std::set判重即可,第一次重复的,肯定是环的入口节点. AC代码 /* struct Li ...
- 剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null. ...
最新文章
- ngx_lua module 模块安装
- DockOne微信分享(一一二):Flannel中vxlan backend的原理和实现
- GLSL着色器周记02
- Python--day43--增删改查补充和limit以及order by
- 设置GNOME或者KDE为默认的启动桌面环境
- 【剑指offer】十九,数组中出现次数超过一半的数字
- Kubernetes管理员的11条 安全军规
- 拿走不谢:一份历经线上考验的大规模系统的消息队列技术方案!
- [Java] 蓝桥杯ADV-184 算法提高 素数求和
- python从入门到精通需要多久-Python从入门到精通:一个月就够了
- lol系统链接不上服务器,lol无法连接服务器【搞定思路】
- org.gradle.api.tasks.compile.CompileOptions.setBootClasspath
- linux串口导致死机,Linux系统死机情况分析与处理方案介绍
- active控件和java脚本_Active控件问题小结(附解决办法)
- wps qt linux,小试牛刀 WPS for Linux beta1文字试用
- 日语整理之 自五 他五
- 如何利用用户分层来提高运营效率?
- b450支持服务器内存,b450支持内存频率是多少
- 都2022年了,PPT这些酷炫操作我不允许你不知道
- 针对儿子买的将近一万的笔记本电脑
热门文章
- Python菜鸟爬虫技巧
- 超简单集成华为HMS Core MLKit 机器学习服务银行卡识别SDK,一键实现银行卡绑定
- mysql 冗余 raid_RAID(廉价磁盘冗余阵列)
- ubuntu16.04 配置远程桌面
- 记一次投稿springer期刊,利用tex排版文稿
- vue 创建一个 表格,横向纵向都可以增加(减少)行和列,并且内容内容可以输入,标题可以修改
- Python OpenCV 3.x 示例:6~11
- 论文阅读-MLPD:Multi-Label Pedestrian Detector in Multispectral Domain(海康威视研究院实习项目)
- 怀揣梦想,我依靠自己,往后余生越来越精彩
- SAP License:仓库ERP系统