面試題23:鏈表中環的入口結點
阿新 • • 發佈:2018-12-30
int div clas ret Coding 結點 page head -i
NowCoder
<?php header("content-type:text/html;charset=utf-8"); /* * 給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 P139 * */ class ListNode{ var $val; var $next = NULL; function __construct($x){ $this->val = $x; } } function EntryNodeOfLoop($pHead) { if($pHead == null){return null; } $fast = $pHead->next->next; $slow = $pHead->next; while($fast != $slow){ //如果相遇就停下,找到相遇的結點(這裏的相遇包含沒有環的情況,如果沒有環,最後slow和fast的值都是null,也會停止循環) $fast = $fast->next->next; $slow = $slow->next; } $fast = $pHead; while($fast != $slow){ $fast = $fast->next; $slow = $slow->next; } return $slow; } $head = new ListNode(1); $head->next = new ListNode(2); $head->next->next = new ListNode(3); $head->next->next->next = new ListNode(4); $head->next->next->next->next = new ListNode(5);$head->next->next->next->next->next = new ListNode(6); $head->next->next->next->next->next->next = $head->next->next->next; print_r(EntryNodeOfLoop($head));
面試題23:鏈表中環的入口結點