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

链表中环的入口结点

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

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function EntryNodeOfLoop(pHead)
{
    // write code here
    /*
    遍历单链表的每个结点
    如果当前结点地址没有出现在set中,则存入set中
    否则,出现在set中,则当前结点就是环的入口结点
    整个单链表遍历完,若没出现在set中,则不存在环 ###代码
*/
//     let p = pHead;
//     let set = new Set();
//     while(p){
//         if(set.has(p)) return p;
//         set.add(p);
//         p = p.next
//     }
    //method 2 时间复杂度:O(n) 空间复杂度:O(1) 
    if(!pHead.next || !pHead.next.next) return null;
    let fast = pHead.next.next;
    let slow = pHead.next;

    while (fast !== slow){
        if(!fast.next || !fast.next.next) return null;
        fast = fast.next.next;
        slow = slow.next;
    }
    if(!fast || !fast.next ) return null; //注意这里检查fast.next是必要的步骤 示例2
    // fast.next 为null 没有环
    fast = pHead;
    while (fast !== slow){
        fast = fast.next;
        slow = slow.next;
    }
    return fast;
}
module.exports = {
    EntryNodeOfLoop : EntryNodeOfLoop
};
全部评论

相关推荐

今天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 8人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务