如果我有一个数字数组和一个总计数组元素的总和列表,那么确定总和中包含哪些元素的最有效方法(或至少不是蛮力破解)是什么?
一个简化的示例可能如下所示:
数组 = [6, 5, 7, 8, 6, 12, 16] 总和 = [14, 24, 22]
我想知道:
14 包括 8、6
24 包括 5、7、12
22 包括 6、16
function matchElements(arr, sums) {
var testArr;
function getSumHash() {
var hash = {},
i;
for (i = 0; i < sums.length; i++) {
hash[sums[i]] = [];
}
return hash;
}
sums = getSumHash();
// I don't have a good sense of where to start on what goes here...
return sumHash;
}
var totals = matchElements([6, 5, 7, 8, 6, 12, 16], [14,24,22]),
total;
for (total in totals) {
console.log(total + "includes", totals[total])
}
我确实知道总会有至少一个正确的答案,我只需要检查数字,我不需要配对有重复的索引,只需配对与总数相关的值。是否有解决此类问题的既定功能?
这只是一个 javascript 问题,因为这是我正在编写解决方案的语言,这更像是通过 Javascript 过滤的一般数学相关问题。如果这不是适当的论坛,我欢迎重定向到适当的堆栈交换站点。