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

链表中环的入口结点

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

/*class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
export function EntryNodeOfLoop(pHead: ListNode): ListNode {
    // write code here
    // method1
//     const nodeSet = new Set();
//     let p = pHead;
//     while(p) {
//         if(nodeSet.has(p)) {
//             return p;
//         } else {
//             nodeSet.add(p);
//             p = p.next;
//         }
//     }
//     return null;
    let fast = pHead, slow = pHead;
    while(fast && fast.next) {
        fast = fast.next.next;
        slow = slow.next;
        if(fast === slow) {
            break;
        }
    }
    if(!fast || !fast.next) {
        return null;
    }
    fast = pHead;
    while(fast !== slow) {
        fast = fast.next;
        slow = slow.next;
    }
    return fast;
}
全部评论

相关推荐

虚闻松声:继续投吧。 简历没啥问题。很优秀。 拙见:自我评价没什么意义;试试转向Agent开发、大模型应用;别死磕传统Java开发。 免费修改简历,就业咨询,欢迎私信交流。
点赞 评论 收藏
分享
一天代码十万三:这都不能算简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务