Rotate Array
Lorsque deux arguments, un tableau de type entier et un entier N (nombre de rotations), sont passés, les éléments du tableau sont déplacés N fois (moins vers la gauche, plus vers la droite). Faisons un tableau pivoté.
Supposons que la séquence suivante soit passée. Si la vitesse de rotation N est -1, tous les éléments sont décalés un par un vers la gauche. Aussi, si le nombre de tours N est égal à 2, tous les éléments sont décalés un par un deux fois vers la droite.
Try It Yourself (Brute Force) La première chose qui m'est venue à l'esprit sur ce problème était l'algorithme de force brute après rotation Il y aura toujours deux tableaux partiels à gauche et à droite, alors créez ces deux tableaux. (Dans le cas de N = 2 dans l'exemple, left_sub_array = {9, 40} et right_sub_array = {1, 10, 20, 0, 59, 86, 32, 11}) Ensuite, les éléments pivotés stockés dans les sous-tableaux gauche et droit sont mis à jour séquentiellement dans le tableau d'origine. Si N est négatif, autorisez l'application de la rotation gauche à l'algorithme de rotation droite.
TEST
OUTPUT
Afin de changer l'ordre des éléments, il est nécessaire de réorganiser les positions de tous les éléments, donc le temps d'exécution O (n) est la limite. Cependant, la quantité de calcul spatial peut être O (1). Autrement dit, il utilise uniquement la structure de données transmise.
Supposons que la même séquence que dans l'exemple précédent soit passée. Le nombre de rotations est N = 2.
Recommended Posts