84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
はこのアルゴリズムに関するコードで、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を使用して、配列された要素の中に条件を満たす要素があるかどうかを確認することです。配列内で走査されています。