有两个数组,总和为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/

10-10 00:34
查看更多