ホームページ >ウェブフロントエンド >jsチュートリアル >合計が 0 になる部分配列があるかどうかを調べる JavaScript プログラム

合計が 0 になる部分配列があるかどうかを調べる JavaScript プログラム

WBOY
WBOY転載
2023-09-23 12:09:041341ブラウズ

JavaScript 程序查找是否存在总和为 0 的子数组

開発者として、配列内に合計が 0 になる部分配列があるかどうかを調べるように求められることがよくあります。これは、プレフィックス合計の概念を使用して実行できます。これまでに確認された部分配列要素の合計を追跡し、ハッシュマップに保存します。 sum が以前に見られた場合、その合計を持つ部分配列が存在し、sum は 0 になります。これまでに確認した要素の合計でハッシュマップを継続的に更新します。このようにして、配列内に合計が 0 の部分配列があるかどうかを判断できます。

###方法###

    変数 "sum" を 0 に初期化し、合計値をキーとして、そのインデックスを値として格納するように "hash_map" オブジェクトを初期化します。
  • 指定された配列を要素ごとにループします -
    • 現在の要素を合計に追加します。
    • 現在の合計が 0 であるか、すでに hash_map に存在する場合、合計が 0 の部分配列があるため、true を返します。
    • それ以外の場合は、合計値とそのインデックスを hash_map に挿入します。
    ループが完了すると、合計が 0 になる部分配列がないため、false が返されます。
  • hash_map は、累積合計を追跡し、重複する合計があるかどうかを判断するのに役立ちます。
  • 重複する合計が見つかった場合は、2 つの合計の間に合計が 0 の部分配列があることを意味します。
  • このメソッドの時間計算量は O(n) です。ここで、n は指定された配列内の要素の数です。
  • ###例###
  • これは、合計が 0 になる部分配列があるかどうかを調べるための完全な JavaScript プログラムの例です -
リーリー

イラスト

関数

hasZeroSum
    は、配列
  • arr

    をパラメータとして受け取ります。 2 つの変数

    sum
  • set

    を初期化します。 sum 変数は部分配列内の要素の現在の合計を追跡するために使用され、set は以前に確認された合計を保存するために使用されます。 次に、

    for李> ループを使用して、配列の要素を反復処理します。
  • 各反復で、現在の要素を

    sum
  • に追加し、
  • set

    にすでに sum の値が含まれているかどうかを確認します。 sum

  • の値が既に
  • コレクションに存在する場合、

    は、最初に合計が出現した場所から現在の要素の末尾までの部分配列の合計を意味します。は 0 なので、true を返します。

    sum
  • の値が
  • set

    にない場合は、それをセットに追加します。 配列全体を反復処理しても

    true
  • が返されない場合は、合計が 0 になる部分配列がないことを意味するため、
  • false

    を返します。 最後に、サンプル配列を使用して関数をテストし、結果をコンソールに記録します。

以上が合計が 0 になる部分配列があるかどうかを調べる JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。