数値の配列と配列要素を合計する合計のリストがある場合、どの要素が合計に含まれているかを判断するための最も効果的なアプローチ (または少なくともブルート フォース ハックではない) は何ですか?
簡単な例は次のようになります。
配列 = [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])
}
常に少なくとも 1 つの正しい答えがあることを知っています。数字がチェックアウトされることだけが重要です。重複があるインデックスをペアにする必要はありません。合計に関連する値だけです。このような問題を解決するための確立された機能はありますか?
これは、私がソリューションを書いている言語であるため、javascript の質問にすぎません。これは、Javascript でフィルタリングされた一般的な数学関連の質問です。これが適切なフォーラムでない場合は、適切なスタック交換サイトへのリダイレクトを歓迎します。