JavaScriptの2-Sum問題に対する簡単な解を書こうとしています。問題は次のようになります。n個の整数とターゲット合計の配列が与えられた場合、2つの整数のどの組み合わせがターゲット値に加算されるかを決定します。JavaScriptの2-sumアルゴリズムを解く
私は、ハッシュテーブルを使用して、いくつかの異なる言語に依存しない例を発見し、JavaScriptで解決策を考え出すことを試みた:
// Integer set:
arr = [1,4,2,3,0,5];
// Target sum:
arg = 7;
// Generate hash table
hashTable = {};
arr.forEach(function(value, index){
hashTable[value] = index;
});
// hashTable = {
// 0: 4,
// 1: 0,
// 2: 2,
// 3: 3,
// 4: 1,
// 5: 5,
// }
for (var i = 0; i < arr.length; i++) {
if (hashTable[arg - arr[i]]) {
console.log([hashTable[arg - arr[i]], i])
}
}
ソリューションは4,3と5,2でなければなりませんが、私は3を取得しています、 1 5,2 1,3および2,5。私はペンと紙を使ってforループを歩くことができます。私は間違ったことをしているのを見ていますが、私が見つけたlangaugeの無関係な例(例えばhereとhere)に従っていると確信しています。どんな助けもありがとう。ここで
を[非常に簡潔なソリューション](HTTPがあります://stackoverflow.com/a/4720397/975097)をこのpに追加しますJavaScriptに翻訳するのが比較的簡単なものです。 –
ループ7-4の2番目のパスは3です。残りの惑星とは別の数学平面で操作していますか? 'hashTable [3]'はまだ3になります。 – PHPglue
@PHPglueごめんなさいあなたは何を得ているのか本当に分かりません。そのソートされていないリストと値3はインデックス3にあることになります。 –