剑指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;
    
}

猜你喜欢

转载自www.cnblogs.com/wuguanglin/p/EntryNodeOfLoop.html