Leetcode 142.环形链表 II JavaScript (Day 10)

js一刷 哈希表

javascript 复制代码
var detectCycle = function(head) {
    let idx=new Map();
    let p1=head;
    while(p1){
        if(idx.has(p1))  return p1;
        idx.set(p1,1);
        p1=p1.next;
    }
    return null;
}

js 一刷 快慢指针

javascript 复制代码
 //我们的任务是找到入环点
var detectCycle = function(head) {
  let slow=head,fast=head;
  while(fast&&fast.next){
    fast=fast.next.next;
    slow=slow.next;
    if(fast===slow){
        let p1=head;
        while(p1!=slow){
            p1=p1.next;
            slow=slow.next;
        }
        return p1;
    }
    
  }
  return null;
}

算法核心:找到入环结点 并返回

假设进环前的路程为 a,环长为 c。设慢指针走了 b 步时,快慢指针相遇,此时快指针走了 2b步。显然 2b-b=nc(快指针比慢指针多走了 n 圈),即 b=nc。也就是说慢指针总共走过的路程是 nc,但这 nc 当中,实际上包含了进环前的一个小 a,因此慢指针在环中只走了 nc-a 步,它还得再往前走 a 步,才是完整的 n 圈。所以,我们让头节点和慢指针同时往前走,当他俩相遇时,就走过了最后这 a 步。

相关推荐
山河木马1 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8181 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
kyriewen4 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW5 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
用户852495071845 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo5 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒7 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn8 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
东风破_8 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript
巴勒个啦8 小时前
D3.js 入门实战:用力导向图可视化项目依赖关系
javascript