Rotate Array
Wenn zwei Argumente übergeben werden, ein Array vom Typ Integer und eine Ganzzahl N (Anzahl der Umdrehungen), werden die Elemente des Arrays N-mal verschoben (minus nach links plus nach rechts). Machen wir es zu einem gedrehten Array.
Angenommen, die folgende Sequenz wird übergeben. Wenn die Drehzahl N -1 ist, werden alle Elemente nacheinander nach links verschoben. Wenn die Anzahl der Umdrehungen N 2 beträgt, werden alle Elemente zweimal nacheinander nach rechts verschoben.
Try It Yourself (Brute Force) Das erste, was mir zu diesem Thema in den Sinn kam, war der Brute-Force-Algorithmus nach der Rotation Links und rechts befinden sich immer zwei Teilarrays. Erstellen Sie also diese beiden Arrays. (Im Fall von N = 2 im Beispiel ist left_sub_array = {9, 40} und right_sub_array = {1, 10, 20, 0, 59, 86, 32, 11}) Dann werden die gedrehten Elemente, die in den linken und rechten Teilarrays gespeichert sind, nacheinander auf das ursprüngliche Array aktualisiert. Wenn N negativ ist, kann die Linksrotation auf den Rechtsrotationsalgorithmus angewendet werden.
TEST
OUTPUT
Um die Reihenfolge der Elemente zu ändern, müssen die Positionen aller Elemente neu angeordnet werden, sodass die Ausführungszeit O (n) die Grenze ist. Der Umfang der räumlichen Berechnung kann jedoch O (1) sein. Das heißt, es wird nur die übergebene Datenstruktur verwendet.
Angenommen, die gleiche Sequenz wie im vorherigen Beispiel wird übergeben. Die Anzahl der Umdrehungen beträgt N = 2.
Recommended Posts