我有例如阵列[10,5,6,3],也是一个变量b = 13,我想计算阵列的每个元件的总和,如果总和等于= B(13)返回true,我第一知道和最后一个元素之和= 13.我怎么能检查哪些对元素的总和?
你可以采取一个哈希表缺少的部分,并返回,如果发现。
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));
您可以使用此算法来检查,如果数组中的两个值具有给定的总和与否。
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))