剑指offer(55)链表中环的入口节点
题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
题目分析
1.一快一慢指针,先找到碰撞点。
2.然后碰撞点到入口节点的距离就是头结点到入口节点的距离。
具体原理可以看这里:http://www.cnblogs.com/wuguanglin/p/LoopOfLinkList.html
代码
/* function ListNode(x){ this.val = x; this.next = null; }*/ function EntryNodeOfLoop(pHead) { let fast = pHead; let slow = pHead; while (fast !== null && fast.next !== null) { slow = slow.next; fast = fast.next.next; if (fast === slow) { // 两者相遇 let p = pHead; while (p !== slow) { p = p.next; slow = slow.next; } return p; } } return null; }