ホームページ >ウェブフロントエンド >jsチュートリアル >指定された配列の回転のみを許可して、Sum( i*arr) の最大値を見つける JavaScript プログラム

指定された配列の回転のみを許可して、Sum( i*arr) の最大値を見つける JavaScript プログラム

PHPz
PHPz転載
2023-08-25 12:09:02979ブラウズ

JavaScript 程序查找 Sum( i*arr) 的最大值,仅允许对给定数组进行旋转

数学的手法を使用して、インデックスと配列内の要素の値の合計の最大値を見つけます。配列を回転させることで、最大の積を持つインデックスに配列の最大値を配置することで、この合計を最大化できます。使用するアルゴリズムでは、インデックスと要素値の積の合計を求め、その合計と配列の長さとインデックス値の合計の積との差をその合計に加算します。

将来的には、このアルゴリズムをさまざまな配列に適用し続けて、インデックスの合計と、回転のみを許可する要素値の積の最大値を見つけます。このソリューションは、配列を 1 回通過するだけで済み、時間計算量が O(n) であるため、非常に効率的です。このアルゴリズムを使用すると、配列内の要素のインデックスと値の積の最大合計を迅速かつ簡単に見つけることができます。

###方法###

    すべての回転の合計は、配列内の各要素に対応するインデックスを乗算し、その結果を加算することで取得できます。
  • 最大値は、最大値のインデックスを見つけて、最大値が最初の要素になるように配列を回転することで取得できます。
  • 最大値は、各要素の値を合計し、そのインデックスを乗算し、それを現在の最大値と比較することによって見つけることができます。
  • すべてのスピンの合計は、すべてのスピンの合計を現在の合計に加算し、スピン数で割ることで求められます。
  • 最大値を結果として返すことができます。
  • ###例###
  • この問題を解決する方法は、まず配列内のすべての要素を合計し、次に回転された配列を反復処理し、現在の回転の差を前の合計に加算して合計を更新します。最大値が答えになります。これは完全な JavaScript の例です -
リーリー

イラスト

関数

maxSum
    は、配列を入力として受け取り、配列を回転して
  • i * arr[i]

    b の合計を取得することで取得できる最大合計を返します。 > 回転ごとに 。 変数

    n
  • 配列の長さを格納します。
  • Variable

    arrSum
  • は、配列内のすべての要素の合計を格納し、0 に初期化されます。
  • 変数

    currVal
  • は、現在の回転の
  • i * arr[i]

    の合計を格納し、0 に初期化されます。 最初のループは、配列内のすべての要素の合計と、最初の回転の

    i * arr[i]
  • の合計を計算します。
  • 変数

    maxVal
  • には最大合計が格納され、
  • currVal

    に初期化されます。 2 番目のループは配列を繰り返し回転し、回転ごとに i * arr[i] の合計を更新します。現在の回転の

    i * arr[i]
  • 合計は、現在の回転の差を前の合計に加算することによって更新されます。
  • currVal
  • の値は、現在の回転の
  • i * arr[i]

    合計と sum >i * の差を加算することによって更新されます。 arr[ i] は最後の回転に使用されます。差は、arrSum から n * arr[n - j] を減算して計算されます。 各スピンの

    currVal
  • 最大値は、
  • Math.max

    関数を使用して maxVal に保存されます。 最後に、

    maxVal の値を答えとして返します。

以上が指定された配列の回転のみを許可して、Sum( i*arr) の最大値を見つける JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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