は、私は、問題の解決策を最適化する助けをしたい、私はすでに問題を整理、私のコードは大きな配列を処理するための十分ではありません - codeWars : Sum of Pairs - problemは、ペアの合計のソリューションの最適化:Codewars
はこちら私のコード -
var sum_pairs=function(e, sum){
var result=null;
var arrLen=e.length;
for(let i=0;i<arrLen-1;i++){
let nextIndex=e.slice(i+1,arrLen).indexOf(sum-e[i]);
if(nextIndex>=0){
result=[e[i],e[nextIndex+1+i]];
arrLen=nextIndex+1+i;
}
}
return result;
}
まあ、私はこれは良い解決策ではないことを知っています。とにかく、これはすべてのテストケースに合格しますが、大規模な配列に遭遇したときに失敗しました - Result On codewars
私はこのコードを最適化する方法を知りたいだけでなく、良いコードを書く方法も学びたいと思っています。
リンクです - https://www.codewars.com/kata/sum-of-pairs/train/javascript –
は( 'ここlink'がある - その(_trainであなたの質問の画像の参照を置き換えます/の部分)。)問題はうまく定義されています:_earlier_のペアはいつの_出現の_の定義ですか?もしそれが最も遅いインデックスfirst_だったなら、あなたは、与えられた合計に合計する異なるインデックスに値があるかどうかを知る必要があります。インデックスの合計が最も低く、結び目を破る索引が最も低い場合は、よりスマートにする必要があります(ご自身でご質問にお答えください)。 –
greybeard
「このコードを最適化する方法を知りたい」 - - アルゴリズムは、大規模な配列を処理するためのものではありません。 「良いコードを書くためのテクニックを学びたい」と思ったのです。あなたは各インデックスを可能な最初のインデックスと見なします - 必然的に見えます。今のところ、ECMAScriptの 'slice'の複雑さを無視して、' indexOf(sum-e [i]) 'を使って各メンバーのクエリがどれくらい努力していますか?総努力?必要な結果は何ですか?そして、あなたの 'sum_pairs'はマッチしたペアが見つかったらどうしますか? (10,000,000のゼロの配列を想像してください、ゼロを合計してください) – greybeard