Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Programm zum Ermitteln des Maximalwerts von Sum( i*arr), das nur eine Drehung des angegebenen Arrays zulässt

JavaScript-Programm zum Ermitteln des Maximalwerts von Sum( i*arr), das nur eine Drehung des angegebenen Arrays zulässt

PHPz
PHPznach vorne
2023-08-25 12:09:02939Durchsuche

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

Wir werden mathematische Methoden verwenden, um den Maximalwert der Summe der Produkte des Index und der Werte der Elemente im Array zu ermitteln. Durch Drehen des Arrays können wir diese Summe maximieren, indem wir den Maximalwert des Arrays am Index mit dem größten Produkt platzieren. Der von uns verwendete Algorithmus besteht darin, die Summe der Produkte des Index mal den Elementwerten zu ermitteln und dann zu dieser Summe die Differenz zwischen dieser Summe und dem Produkt aus der Array-Länge mal der Summe der Indexwerte zu addieren.

In Zukunft werden wir diesen Algorithmus weiterhin auf verschiedene Arrays anwenden, um den Maximalwert der Summe aus Index und Produkt der Elementwerte zu ermitteln, der nur eine Drehung zulässt. Diese Lösung ist sehr effizient, da sie nur eine Iteration durch das Array erfordert und eine zeitliche Komplexität von O(n) aufweist. Mit diesem Algorithmus können wir schnell und einfach die maximale Summe der Produkte der Indizes und Werte der Elemente im Array ermitteln.

Methode

  • Die Summe aller Rotationen kann erhalten werden, indem jedes Element im Array mit seinem entsprechenden Index multipliziert und die Ergebnisse addiert wird.

  • Der Maximalwert kann ermittelt werden, indem der Index des Maximalwerts ermittelt und das Array so gedreht wird, dass der Maximalwert das erste Element ist.

  • Der Maximalwert kann ermittelt werden, indem der Wert jedes Elements multipliziert mit seinem Index summiert und mit dem aktuellen Maximalwert verglichen wird.

  • Die Summe aller Spins lässt sich ermitteln, indem man die Summe aller Spins zur aktuellen Summe addiert und durch die Anzahl der Spins dividiert.

  • Kann den Maximalwert als Ergebnis zurückgeben.

Beispiel

Die Lösung für dieses Problem besteht darin, zunächst die Summe aller Elemente im Array zu ermitteln, dann über das gedrehte Array zu iterieren und die Summe zu aktualisieren, indem die Differenz der aktuellen Rotation zur vorherigen Summe addiert wird. Die maximale Summe ist die Antwort. Hier ist ein vollständiges JavaScript-Beispiel -

function maxSum(arr) {
   let n = arr.length;
   let arrSum = 0;
   let currVal = 0;
   for (let i = 0; i < n; i++) {
      arrSum += arr[i];
      currVal += i * arr[i];
   }
   let maxVal = currVal;
   for (let j = 1; j < n; j++) {
      currVal = currVal + arrSum - n * arr[n - j];
      maxVal = Math.max(maxVal, currVal);
   }
   return maxVal;
}
let arr = [1, 20, 2, 10];
console.log(maxSum(arr)); // Output: 72

Anleitung

    Die
  • -Funktion maxSum verwendet ein Array als Eingabe und gibt die maximale Summe zurück, die durch Drehen des Arrays und Nehmen der Summe von i * arr[i] für jede Drehung erhalten werden kann.

  • Variable n speichert die Länge des Arrays.

  • Die Variable arrSum speichert die Summe aller Elemente im Array und wird auf 0 initialisiert.

  • Die Variable currVal speichert die Summe von i * arr[i] für die aktuelle Rotation und wird auf 0 initialisiert.

  • Die erste Schleife berechnet die Summe aller Elemente im Array und die Summe von i * arr[i] für die erste Rotation.

  • Die Variable maxVal speichert die maximale Summe und wird auf currVal initialisiert.

  • Die zweite Schleife dreht das Array iterativ und aktualisiert die Summe von i * arr[i] für jede Drehung. Die Summe von i * arr[i] für die aktuelle Rotation wird aktualisiert, indem die Differenz der aktuellen Rotation zur vorherigen Summe addiert wird.

  • Der Wert von
  • currVal wird aktualisiert, indem die Differenz zwischen der Summe von i * arr[i] für die aktuelle Rotation und der Summe von i * arr[i] für die vorherige Rotation addiert wird. Die Differenz wird berechnet, indem n * arr[n - j] von arrSum subtrahiert wird.

  • Der Maximalwert von currVal für jede Drehung wird in maxVal mithilfe der Funktion Math.max gespeichert.

  • Gibt schließlich den Wert von maxVal als Antwort zurück.

Das obige ist der detaillierte Inhalt vonJavaScript-Programm zum Ermitteln des Maximalwerts von Sum( i*arr), das nur eine Drehung des angegebenen Arrays zulässt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen