gpt4 book ai didi

javascript - 来自指定数组的元素对,其总和等于特定目标数

转载 作者:可可西里 更新时间:2023-11-01 02:24:29 24 4
gpt4 key购买 nike

我正在进行 JavaScript session 。在我的编码练习中找到这段代码。我理解逻辑,但我没有得到这个 map[nums[x]] 条件。

function twoSum(nums, target_num) {  
var map = [];
var indexnum = [];

for (var x = 0; x < nums.length; x++)
{
if (map[nums[x]] != null)
// what they meant by map[nums[x]]
{
index = map[nums[x]];
indexnum[0] = index+1;
indexnum[1] = x+1;
break;
}
else
{
map[target_num - nums[x]] = x;
}
}
return indexnum;
}
console.log(twoSum([10,20,10,40,50,60,70],50));

我正在尝试从指定数组中获取元素对,其总和等于特定目标数。我写了下面的代码。

function arraypair(array,sum){
for (i = 0;i < array.length;i++) {
var first = array[i];
for (j = i + 1;j < array.length;j++) {
var second = array[j];

if ((first + second) == sum) {
alert('First: ' + first + ' Second ' + second + ' SUM ' + sum);
console.log('First: ' + first + ' Second ' + second);
}
}

}
}

var a = [2, 4, 3, 5, 6, -2, 4, 7, 8, 9];

arraypair(a,7);

有没有比以上两种解决方案更优化的方式?有人可以解释第一个解决方案 map[nums[x]] 这个条件究竟指向什么吗?

最佳答案

使用时间复杂度约为O(n)的HashMap方法,如下代码:

let twoSum = (array, sum) => {
let hashMap = {},
results = []

for (let i = 0; i < array.length; i++){
if (hashMap[array[i]]){
results.push([hashMap[array[i]], array[i]])
}else{
hashMap[sum - array[i]] = array[i];
}
}
return results;
}
console.log(twoSum([10,20,10,40,50,60,70,30],50));

结果:

{[10, 40],[20, 30]}

我认为代码是不言自明的,即使你需要帮助理解它,也请告诉我。我很乐意为它做解释。

希望对你有帮助..

关于javascript - 来自指定数组的元素对,其总和等于特定目标数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com