题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function EntryNodeOfLoop(pHead) {
    if (!pHead || !pHead.next) return null;

    // 先判断是否有环
    let slow = pHead.next,
        fast = pHead.next.next;

    while (fast && fast.next && fast !== slow) {
        slow = slow.next;
        fast = fast.next.next;
    }

    if (!fast || !fast.next) return null;

    slow = pHead;
    while (fast !== slow) {
        slow = slow.next;
        fast = fast.next;
    }

    return slow;
}
module.exports = {
    EntryNodeOfLoop: EntryNodeOfLoop,
};

判断链表是否有环,并且找到环的入口结点经典题。

慢指针走一步,快指针走两步,相遇则有环。

相遇后,慢指针再从头开始走,再次相遇的时候就是环入口点。

全部评论

相关推荐

勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳  yidao,试用期 6 个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务