有没有更有效的方法来编写这个"2 Sum"问题 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/10/2 21:00:17
我们的工作是编写一个函数,在最多线性时间内解决二和问题。
二和问题
给定一个整数数组,我们必须找到两个数字,使它们加起来等于一个特定的目标数字。
函数 twoSum 应该返回加起来等于目标的两个数字的索引,如果没有两个元素加起来等于目标,我们的函数应该返回一个空数组。
在 O(n) 时间内解决问题
我们将使用哈希图来记录已经出现的项目,每次通过时,我们将检查映射中是否存在任何元素,当添加到当前元素时,加起来等于目标,如果有,我们将返回一个包含其索引的数组,如果我们完成整个循环而不满足此条件,我们将返回一个空数组数组。
示例
const arr = [2, 5, 7, 8, 1, 3, 6, 9, 4];
const sum = 10;
const twoSum = (arr, sum) => {
const map = {};
for(let i = 0; i < arr.length; i++){
const el = sum - arr[i];
if(map[el]){
return [map[el], i];
};
map[arr[i]] = i;
};
return [];
};
console.log(twoSum(arr, sum));
console.log(twoSum(arr, 12));
console.log(twoSum(arr, 13));
console.log(twoSum(arr, 14));
console.log(twoSum(arr, 24));
输出
控制台中的输出将是 −
[ 2, 5 ] [ 1, 2 ] [ 1, 3 ] [ 3, 6 ] []
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

