php单链表检测有没有环,PHP找出链表中环入口节点步骤详解
这次给大家带来PHP找出链表中环入口节点步骤详解,PHP找出链表中环入口节点的注意事项有哪些,下面就是实战案例,一起来看一下。
问题
一个链表中包含环,请找出该链表的环的入口结点。
解决思路
第一步,找环中相汇点。分别用p1,p2指向链表头部,p1每次走一步,p2每次走二步,直到p1==p2找到在环中的相汇点。
第二步,找环的入口。接上步,当p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2x=n+x; n=x;可以看出p1实际走了一个环的步数,再让p2指向链表头部,p1位置不变,p1,p2每次走一步直到p1==p2; 此时p1指向环的入口。(还没怎么懂)
实现代码<?php
/*class ListNode{
var $val;
var $next = NULL;
function construct($x){
$this->val = $x;
}
}*/
function EntryNodeOfLoop($pHead)
{
if($pHead == null || $pHead->next == null)
return null;
$p1 = $pHead;
$p2 = $pHead;
while($p2!=null && $p2->next!=null){
$p1 = $p1->next;
$p2 = $p2->next->next;
if($p1 == $p2){
$p2 = $pHead;
while($p1!=$p2){
$p1 = $p1->next;
$p2 = $p2->next;
}
if($p1 == $p2)
return $p1;
}
}
return null;
}
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
php单链表检测有没有环,PHP找出链表中环入口节点步骤详解相关推荐
- 判断链表是否有环,并且找出链表环的接点
1.判断链表是否有环,根据Floyd判圈法,设置两个指针,fast, slow.fast指针每次移动2个位置,slow指针每次移动1个位置.如果链表有环,fast,slow指针会再次相遇. 2.如果链 ...
- php单链表检测有没有环,写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P点...
首先,关于单链表中的环,一般涉及到以下问题: 1.给一个单链表,判断其中是否有环的存在: 2.如果存在环,找出环的入口点: 3.如果存在环,求出环上节点的个数: 4.如果存在环,求出链表的长度: 5. ...
- 【链表】如何判断两个单向链表是否有相交,并找出交点
判断两个链表是否相交:(假设两个链表都没有环) 1.判断第一个链表的每个节点是否在第二个链表中 2.把第二个链表连接到第一个后面,判断得到的链表是否有环,有环则相交 3.先遍历第一个链表,记住最后一个 ...
- 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点
[试题描述]定义一个函数,输入一个链表,判断链表是否存在环路,并找出回路起点 Circular linked list: A (corrupt) linked list in which a node ...
- Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇
Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P 都 ...
- ios php 表单提交图片上传,axios发送post请求提交图片表单步骤详解
这次给大家带来axios发送post请求提交图片表单步骤详解,axios发送post请求提交图片表单的注意事项有哪些,下面就是实战案例,一起来看一下. DOME 接口const userUploadA ...
- 抢鲜体验:Oracle 19C单实例数据库安装步骤详解
抢鲜体验:Oracle 19C单实例数据库安装步骤详解 原创: 李宏达 数据和云 今天 作者:李宏达,云和恩墨北区交付工程师. 大家一直期待的 Oracle Database 19c 今天已经提供公开 ...
- php单链表检测有没有环,PHP 和 Go 实现环路链表检测
环路链表检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点. 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路. 解题思路 1 遍历链表, ...
- fatal error lnk1561: 必须定义入口点_链表中是否有环以及找环的入口问题总结
这篇会详细介绍有关环的入口节点问题,包括代码和理论证明. 首先来看一下如何判断链表中是否存在环.方法很简单,定义两个快慢指针slow和fast,慢指针每次走一步,快指针每次走两步,如果存在环,则快慢指 ...
最新文章
- Luogu P1082 同余方程(NOIP 2012) 题解报告
- 手机吸费软件肆意捞金,通过代码签名证书加以防范
- python下载安装教程mac-教程|如何在mac上为Python安装XGBoost!
- 卡巴斯基:儿童和老人的在线安全隐忧
- 2021热度不减的在线教育,正在努力成为线下教育的有益补充
- JS,Jquery 调用 C#WebService
- 构造函数调用默认构造函数_显式无参数构造函数与默认构造函数
- [Leetcode][第174题][JAVA][地下城游戏][DFS][动态规划]
- 【CodeForces - 215A】Bicycle Chain (水题)
- CAN收发器SN65HVD230,实际应用案例分析
- 这些面试中经常被问到的线程池问题,你都能回答的上来吗?
- Cuckoo Hashing
- 单片机C语言关键字之extern
- 执行SOA ——SOA实践指南
- MySQL order by、desc、limt的使用
- pwnable之bof
- Visual studio 2015(VS2015)的下载和安装,以及安装VS2015中的C++
- 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
- 穹顶之下的出行利器:百度地图热力
- revit应用程序无法启动_revit无法运行外部
热门文章
- 和云服务器同步文件,和云服务器同步文件
- Python读取键盘输入到一维列表及二维列表
- 东方信息苑c语言,上海市东方社区信息苑一览表.PDF
- 什么是动态规划?动态规划的意义是什么?
- 数字电路硬件设计系列(八)之LED电路设计
- DVB-S2 DVB-S2X DVB-DSNG 发射机 接收机FPGA IP
- oracle10.21数据库安装,安装并创建数据库【Oracle Database 10g】(三)
- 服务器如何验证jwt,使用JWT实现前后端权限验证
- 脚本显示服务器超时,服务器诡异的请求超时问题
- 散列——再散列与双散列(C++)