はこのアルゴリズムに関するコードで、JavaScript で実装されていますが、以下のアルゴリズムがわかりません。神に説明を求めてください。
質問者はサンプルを使用してコードを読んでみることができます。私の意見は次のとおりです:
たとえば、スクリーンショットの例をクリックしてください:
for ループは主に最初のパラメーター配列を走査し、その後 2 つの重要なステップを実行します。
最初に if の後の文を見てみましょう exist[nums[i]] = i + 1; この文はループごとに実行されます。たとえば、最初に通過した数値は 2 (i=0) であるため、exist は保存されます。このようなキーと値のペアは、1 つのループの後、次のようになります: array 次に、「要素値」: 「配列インデックス + 1」のキーと値のペアの辞書。
exist[nums[i]] = i + 1;
次に、if での判定を見てみましょう。もちろん、for ループで i=0 のとき、exist はまだキーと値のペアを注入しておらず、if 式は false です
しかし、i=1 の場合、exist[target-nums[1]] は、exist[9-7] =exist[2] を意味します。これは、i=0 のときに挿入された、exist の最初のキーと値のペアではないでしょうか? ?したがって、対応するキーと値のペアの値 (実際には元の配列内の元の値のインデックス + 1) を ret に保存し、次に現在の i+1 を ret に保存します。最後に、ループが完了したら、 ret に戻ると、 [1,2] が得られました ps: 質問者が示した例に対する答えは、コードと矛盾しています。
概要: このアルゴリズムの核心は、オブジェクトのexistを使用して走査された配列要素を格納し、target-nums[i]を使用して間接的にexistを使用して、配列された要素の中に条件を満たす要素があるかどうかを確認することです。配列内で走査されています。
質問者はサンプルを使用してコードを読んでみることができます。私の意見は次のとおりです:
たとえば、スクリーンショットの例をクリックしてください:
for ループは主に最初のパラメーター配列を走査し、その後 2 つの重要なステップを実行します。
最初に if の後の文を見てみましょう
exist[nums[i]] = i + 1;
この文はループごとに実行されます。たとえば、最初に通過した数値は 2 (i=0) であるため、exist は保存されます。このようなキーと値のペアは、1 つのループの後、次のようになります:array 次に、「要素値」: 「配列インデックス + 1」のキーと値のペアの辞書。
次に、if での判定を見てみましょう。もちろん、for ループで i=0 のとき、exist はまだキーと値のペアを注入しておらず、if 式は false です
しかし、i=1 の場合、exist[target-nums[1]] は、exist[9-7] =exist[2] を意味します。これは、i=0 のときに挿入された、exist の最初のキーと値のペアではないでしょうか? ?したがって、対応するキーと値のペアの値 (実際には元の配列内の元の値のインデックス + 1) を ret に保存し、次に現在の i+1 を ret に保存します。最後に、ループが完了したら、 ret に戻ると、 [1,2] が得られました ps: 質問者が示した例に対する答えは、コードと矛盾しています。
概要: このアルゴリズムの核心は、オブジェクトのexistを使用して走査された配列要素を格納し、target-nums[i]を使用して間接的にexistを使用して、配列された要素の中に条件を満たす要素があるかどうかを確認することです。配列内で走査されています。