搜索数字在阵列中与一定量的

问题描述 投票:-2回答:2

我有例如阵列[10,5,6,3],也是一个变量b = 13,我想计算阵列的每个元件的总和,如果总和等于= B(13)返回true,我第一知道和最后一个元素之和= 13.我怎么能检查哪些对元素的总和?

javascript
2个回答
0
投票

你可以采取一个哈希表缺少的部分,并返回,如果发现。

function check(array, sum) {
    var hash = {},
        i = 0,
        v;
        
    while (i < array.length) {
        v = array[i];
        if (hash[v]) return true;
        hash[sum - v] = true;
        ++i;
    }
    return false;
}

console.log(check([10, 5, 6, 3], 13));
console.log(check([10, 5, 6, 3], 17));

0
投票

您可以使用此算法来检查,如果数组中的两个值具有给定的总和与否。

function pairWithSum(array,sum){
  //sort the array
  const arr = array.sort((a,b) => a -b);
  while(arr.length > 1){
    if(arr[0] + arr[arr.length - 1] > sum) arr.pop()
    if(arr[0] + arr[arr.length - 1] < sum) arr.shift()
    if(arr[0] + arr[arr.length - 1] === sum) return true
  }
  return false;
}
console.log(pairWithSum([10,3,5,6,1],1))
console.log(pairWithSum([10,3,5,6,1],11))
console.log(pairWithSum([10,3,5,6,1],13));
console.log(pairWithSum([10,3,5,6,1],55))
© www.soinside.com 2019 - 2024. All rights reserved.