1769. Mindestanzahl an Operationen, um alle Bälle in jede Box zu bewegen
Schwierigkeit:Mittel
Themen:Array, String, Präfixsumme
Sie haben n Boxen. Sie erhalten eine binäre Zeichenfolge „boxes“ der Länge n, wobei „boxes[i]“ „0“ ist, wenn das ite Feld leer ist, und „1“, wenn es enthält einBall.
In einem Arbeitsgang können Sie einen Ball von einer Box in eine benachbarte Box bewegen. Box i grenzt an Box j an, wenn abs(i - j) == 1. Beachten Sie, dass sich danach möglicherweise mehr als eine Kugel in einigen Boxen befindet.
Gib eine Array-Antwort der Größe n zurück, wobei Antwort[i] die minimale Anzahl an Operationen ist, die erforderlich sind, um alle Kugeln in das iteFeld zu bewegen.
Jede Antwort[i] wird unter Berücksichtigung des Ausgangszustands der Boxen berechnet.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
Lösung:
Wir können einen Präfixsummenansatz verwenden, der es uns ermöglicht, die minimale Anzahl von Operationen zu berechnen, die erforderlich sind, um alle Bälle in jede Box zu bewegen, ohne jede Operation explizit zu simulieren.
Lassen Sie uns diese Lösung in PHP implementieren: 1769. Mindestanzahl an Operationen, um alle Bälle in jede Box zu bewegen
<?php /** * @param String $boxes * @return Integer[] */ function minOperations($boxes) { ... ... ... /** * go to ./solution.php */ } // Example usage: $boxes = "110"; print_r(minOperations($boxes)); // Output: [1,1,3] $boxes = "001011"; print_r(minOperations($boxes)); // Output: [11,8,5,4,3,4] ?> <h3> Erläuterung: </h3> <ol> <li> <strong>Links-nach-rechts-Pass</strong>: Wir berechnen die Gesamtzahl der erforderlichen Vorgänge, um alle Bälle von der linken Seite in den aktuellen Strafraum zu bringen. Für jede gefundene Kugel ('1') aktualisieren wir die Gesamtzahl der Züge.</li> <li> <strong>Rechts-nach-Links-Pass</strong>: Ähnlich dem Links-nach-Rechts-Pass, aber wir berechnen die Anzahl der Vorgänge, um Bälle von der rechten Seite in den aktuellen Strafraum zu bewegen.</li> <li>Die Gesamtzahl der Operationen für jede Box ist die Summe der Bewegungen aus dem linken und rechten Durchgang.</li> </ol> <h3> Beispielhafte Vorgehensweise: </h3> <h4> Beispiel 1: </h4> <pre class="brush:php;toolbar:false">$boxes = "110"; print_r(minOperations($boxes));
Ausgabe:
Array ( [0] => 1 [1] => 1 [2] => 3 )
$boxes = "001011"; print_r(minOperations($boxes));
Ausgabe:
Array ( [0] => 11 [1] => 8 [2] => 5 [3] => 4 [4] => 3 [5] => 4 )
Diese Lösung berechnet effizient die minimale Anzahl von Operationen für jedes Feld mithilfe der Präfixsummentechnik.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt vonMindestanzahl an Operationen, um alle Bälle in jede Box zu bewegen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!