利用PHP怎么找出链表中环的入口节点

  介绍

本篇文章为大家展示了利用PHP怎么找出链表中环的入口节点,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>解决思路

第一步,找环中相汇点。分别用p1, p2指向链表头部,p1每次走一步,p2每次走二步,直到p1==p2找到在环中的相汇点。
第二步,找环的入口。接上步,当p1==p2时,p2所经过节点数为2 x, p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2 x=n + x;n=x;可以看出p1实际走了一个环的步数,再让p2指向链表头部,p1位置不变,p1, p2每次走一步直到p1==p2;此时p1指向环的入口。(还没怎么懂)

<强>实现代码

& lt; php ?/* class  ListNode {   var 才能,val美元;   var 才能;next 美元;=,空;   function 才能__construct ($ x) {   ,,,这个→美元val =, $ x;   ,,}   }*/function  EntryNodeOfLoop (pHead美元)   {   如果才能(pHead 美元==,null  | |,美元pHead→next ==, null)   ,,,return 零;   时间=美元才能p1  pHead美元;   时间=美元才能p2  pHead美元;   而才能(p2美元!=null ,,, p2→美元未来!=null) {   ,,,p1 美元;=,p1→美元未来;   p2 美元,,,,=,美元p2→下一步→下;   ,,,如果美元($ p1 ==, p2) {   ,,,,,p2 美元;=,pHead美元;   ,,,,,,(p1美元!=$ p2) {   ,,,,,,,p1 美元;=,p1→美元未来;   ,,,,,,,p2 美元;=,p2→美元未来;   ,,,,,}   ,,,,,如果美元($ p1 ==, p2)   ,,,,,,,return  p1美元;   ,,,}   ,,}   return 才能;零;   }

上述内容就是利用PHP怎么找出链表中环的入口节点,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

利用PHP怎么找出链表中环的入口节点