LeetCode热题100-相交链表【JavaScript讲解】

题目:




分析:

哈希集合是一种特殊的数据结构,用于存储唯一的元素,并允许快速地进行插入、删除和查找操作‌。哈希集合的实现主要依赖于哈希函数和链表。

判断两个链表是否相交,可以使用哈希集合存储链表节点。

  • ‌遍历链表A‌:代码使用一个 while 循环遍历链表 headA。在每次迭代中,将当前节点添加到 visited集合中,并将当前节点更新为下一个节点。这样,当遍历完链表 headA 后,visited 集合中就包含了链表 headA 中的所有节点。
  • 遍历链表B并检查相交‌:然后,代码使用另一个 while 循环遍历链表headB。在每次迭代中,检查当前节点是否存在于 visited集合中。如果存在,说明当前节点是两个链表的相交节点,函数立即返回该节点。如果遍历完链表 headB 后没有找到相交节点,则函数返回null。

题解:

javascript 复制代码
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} headA
 * @param {ListNode} headB
 * @return {ListNode}
 */
var getIntersectionNode = function(headA, headB) {
    let visited = new Set();
    let current = headA;
    while(current !== null){
        visited.add(current);
        current = current.next;
    }

    current = headB;
    while(current !== null){
        if(visited.has(current)){
            return current;
        }
        current = current.next;
    }
    return null;
}

通过:

相关推荐
卷帘依旧18 分钟前
JavaScript 闭包经典问题:为什么输出 10 次 i=10
javascript
柳杉36 分钟前
Three.js × Blender:从建模到 Web 3D 的完整工作流深度解析
前端·javascript·数据可视化
用户806138166592 小时前
发布为一个 npm 包
前端·javascript
TT_哲哲2 小时前
小程序双模式(文件 / 照片)上传组件封装与解析
前端·javascript
从文处安3 小时前
「九九八十一难」从回调地狱到异步秩序:深入理解 JavaScript Promise
前端·javascript
进击的尘埃3 小时前
Node.js 子进程管理:child_process 模块的正确打开方式
javascript
angerdream3 小时前
最新版vue3+TypeScript开发入门到实战教程之Pinia详解
前端·javascript·vue.js
怜悯3 小时前
uniapp 如何实现google登录-安卓端
前端·javascript
TT_哲哲3 小时前
小程序解析字符串拼接多图 点击放大展示
前端·javascript
Aaswk3 小时前
刷题笔记(回溯算法)
数据结构·c++·笔记·算法·leetcode·深度优先·剪枝