[PHP] 算法-请找出带环链表的环的入口结点的PHP实现
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null1.找链表倒数第k个结点,输入一个链表,输出该链表中倒数第k个结点。第一个指针走(k-1)步,到达第k个节点,两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了2.原理有点像上面的,定义两个指针,一个是快指针每次走两步,一个是慢指针每次走一步,当两个相遇的时候,假设环的长度为n个结点,慢指针走x步,快指针走2x步,2x=x+kn ;x=kn; k暂时假定为1圈 ,也就是慢指针slow走了一个环的距离3.快指针回到头结点,慢指针原位置不动,两个每次都是走一步,当两个再次相遇的时候,就是在环入口;想象把环捋直,和倒数第k个结点很像了slow fast while fast!=null && fast->next!=nullslow=slow->nextfast=fast->next->nextif slow==fastfast=headwhile slow!=fastslow=slow->nextfast=fast->nextif slow==fastreturn slow return null
<?php class Node{public $data;public $next;public function __construct($data=""){$this->data=$data;} } //构造一个带环的链表 $linkList=new Node(); $linkList->next=null; $temp=$linkList;$node1=new Node("111"); $temp->next=$node1; $temp=$node1;$node2=new Node("222"); $temp->next=$node2; $temp=$node2;$node3=new Node("333"); $temp->next=$node3; $temp=$node3;$node4=new Node("444"); $temp->next=$node4; $node4->next=$node2;//尾结点指向第二个结点function EntryNodeOfLoop($pHead){$slow=$pHead;$fast=$pHead;while($fast!=null && $fast->next!=null){$slow=$slow->next;//慢指针走一步$fast=$fast->next->next;//快指针走两步//快慢指针环内相遇if($slow==$fast){//快指针回到头结点$fast=$pHead;//同一速度再同时走while($slow!=$fast){$slow=$slow->next;$fast=$fast->next;} //两个相遇的点一定是环的入口if($slow==$fast){return $fast;} } } } var_dump($linkList); $result=EntryNodeOfLoop($linkList); var_dump($result);
object(Node)#1 (2) {["data"]=>string(0) ""["next"]=>object(Node)#2 (2) {["data"]=>string(3) "111"["next"]=>object(Node)#3 (2) {["data"]=>string(3) "222"["next"]=>object(Node)#4 (2) {["data"]=>string(3) "333"["next"]=>object(Node)#5 (2) {["data"]=>string(3) "444"["next"]=>*RECURSION*}}}} } object(Node)#3 (2) {["data"]=>string(3) "222"["next"]=>object(Node)#4 (2) {["data"]=>string(3) "333"["next"]=>object(Node)#5 (2) {["data"]=>string(3) "444"["next"]=>*RECURSION*}} }
转载于:https://www.cnblogs.com/taoshihan/p/9631637.html
[PHP] 算法-请找出带环链表的环的入口结点的PHP实现相关推荐
- [转] 程序员面试题精选100题(35)-找出两个链表的第一个公共结点
[转] http://hi.baidu.com/evrest/blog/item/bb9365fc7569378ab801a059.html 题目:两个单向链表,找出它们的第一个公共结点. 链表的结点 ...
- 请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素
给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素. 实现这个算法,并为可能出现的特例情况安排好处理措施. 倒数第m个元素"是这样规定的:当m= ...
- 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。
笔者初涉<算法设计与分析>这门专业课,在做一些算法设计题的过程中遇到一些小感悟,特此记录和大家分享. 下面直接给出算法题目: 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 ...
- 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,
题目描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 示 ...
- 典型的Top K算法_找出一个数组里面前K个最大数
原文 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入 ...
- 通过深度优先算法来找出有向图的树边,后向边,前向边,横跨边
**通过深度优先算法来找出有向图的树边,后向边,前向边,横跨边(Java实现) ** package graph;import java.io.IOException; import java.uti ...
- 巧妙算法:找出数组中消息的数字
题目: 在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7, ...
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
[例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...
- 《剑指offer》给定一颗二叉搜索树,请找出其中的第k大的结点。
题目:给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 解析:看到我写的下面的代码,像一篇文章一样的长, ...
最新文章
- containerd镜像导入import和push命令 gzip压缩解压缩命令
- 数据结构开发(7):典型问题分析(Bugfix)
- TextView 多文字字体颜色及多事件监听
- java 格式化小数_java-如何格式化小数位数精度
- [1] SDK Tools安装
- iscsi多路径配置方式
- linux maven安装与入门
- THAAD反导必将部署,各方已接受事实
- 一篇述说“山寨”的文章,转过来大家看看。
- java $字符串替换_Java8字符串替换方法梳理
- 基于内容的图像检索系统设计与实现-java+mysql
- 阿里云MVP精选2018年终盘点:大咖专访+最佳实践,丰富干货等你来!...
- 2022-4-12作业
- 基于云的文档管理软件/文档管理系统(DMS)
- svg --- 可缩放矢量图形
- leetcode java 大厂基础面试题附答案(四)
- STM32F103步进电机驱动简单控制
- 台式计算机主板检测与维修,台式电脑主板故障怎么回事 台式电脑主板故障原因及诊断方法...
- 【完整记录】使用kubeadm部署kubernetes集群踩坑记录及解决方案
- 关于window10和爱剪辑软件的兼容出错问题。
热门文章
- PCB设计1 模块间的隔离
- 虚拟存储器与虚拟内存
- 趋势一次一单EA,不加仓不网格,每单带止损止盈,风险可控
- pytorch中的value, top = prob.topk(1, dim=1, largest=True, sorted=True)
- [ant design vue] 表单验证成功,提示信息不显示
- SVN客户端TortoiseSVN基本使用方法步骤-初人指南
- 打印服务spoolsv.exe应用程序错误解决方法
- 使用微软官方工具下载安装Windows10系统
- python - BeautifulSoup教程
- WiFI Display介绍