有两个数组,总和为9。
它只会返回true或false的内容
即:
array1 [1,2,4,9] sum = 9返回false
array2 [1,2,4,5] sum = 9返回true
它需要数组中的两个数字来匹配总和。
我在JS中尝试的方法:
function hasPairWithSum(arr, sum) {
var len = arr.length;
for(var i =0; i<len-1; i++) {
for(var j = i+1;j<len; j++) {
if (arr[i] + arr[j] === sum)
return true;
}
}
return false;
}
console.log(hasPairWithSum([1, 2, 4, 9], 9));
console.log(hasPairWithSum([1, 2, 4, 5], 9));
好吧,我想要一种不同的方法来达成目标
最佳答案
一个快速的解决方案是
function twoSum(arr, S) {
var hashTable = {};
// check each element in array
for (var i = 0; i < arr.length; i++) {
// calculate S - current element
var sumMinusElement = S - arr[i];
// check if this number exists in hash table
// if so then we found a pair of numbers that sum to S
if (hashTable[sumMinusElement.toString()] !== undefined) {
return true;
}
// add the current number to the hash table
hashTable[arr[i].toString()] = arr[i];
}
// return false as default
return false;
}
console.log(twoSum([3, 5, 2, -4, 8, 11], 7));
它使用哈希表
关于javascript - 如何使用javascript获取元素值以匹配总和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54632740/