欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > JavaScript实现著名的“两数之和”问题

JavaScript实现著名的“两数之和”问题

2025/6/30 14:26:24 来源:https://blog.csdn.net/cuijiying/article/details/146055149  浏览:    关键词:JavaScript实现著名的“两数之和”问题

在这里插入图片描述
下面是使用 JavaScript 实现“两数之和”问题的一种常见解法,利用哈希表(Map)存储遍历过的数字和它们对应的下标,从而在一次遍历中完成查找。以下是详细的代码和说明:

function twoSum(nums, target) {// 创建一个 Map 用于存放数字及其下标const map = new Map();// 遍历数组for (let i = 0; i < nums.length; i++) {// 计算当前数字所需要的补数const complement = target - nums[i];// 如果 Map 中存在这个补数,说明找到了答案if (map.has(complement)) {return [map.get(complement), i];}// 将当前数字及其下标存入 Map 中map.set(nums[i], i);}// 根据题目的假设,每种输入一定有唯一答案return [];
}// 举例说明
const nums = [2, 7, 11, 15];
const target = 9;
const result = twoSum(nums, target);
console.log("下标结果为:", result);  // 输出: 下标结果为: [0, 1]

代码解析

  1. 初始化 Map:使用 Map 存储数组中已遍历的数字和它们对应的下标。
  2. 遍历数组:对每个元素 nums[i]
    • 计算补数 complement = target - nums[i]
    • 检查 complement 是否已存在于 Map 中。如果存在,则返回 [map.get(complement), i],即补数的下标和当前数字的下标。
    • 如果不存在,则将当前数字和下标存入 Map 中,供后续查找使用。
  3. 返回结果:因为题目保证存在唯一解,所以在找到答案后直接返回。

复杂度分析

  • 时间复杂度:O(n)。只需对数组进行一次遍历。
  • 空间复杂度:O(n)。Map 最多存储 n 个元素。

这种方法充分利用了哈希表的快速查找特性,能够在一次遍历中高效地找到目标答案。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词