Dada una array de enteros arr[] de tamaño N , la tarea es imprimir todas las rotaciones posibles de la array.
Ejemplos:
Entrada: arr[] = {1, 2, 3, 4}
Salida: {1, 2, 3, 4}, {4, 1, 2, 3}, {3, 4, 1, 2}, {2, 3, 4, 1}
Explicación:
Inicial arr[] = {1, 2, 3, 4}
Después de la primera rotación arr[] = {4, 1, 2, 3}
Después de la segunda rotación arr[] = {3, 4, 1, 2}
Después de la tercera rotación arr[] = {2, 3, 4, 1}
Después de la cuarta rotación, arr[] vuelve a su forma original.
Entrada: arr[] = [1]
Salida: [1]
Enfoque:
siga los pasos a continuación para resolver el problema:
- Genere todas las rotaciones posibles de la array, realizando una rotación a la izquierda de la array una por una.
- Imprima todas las rotaciones posibles de la array hasta que se encuentre la misma rotación de la array.
A continuación se muestra la implementación del enfoque anterior:
Javascript
<script> // javascript program to print // all possible rotations // of the given array // Global declaration of array arr = Array.from({length: 10000}, (_, i) => 0); // Function to reverse array // between indices s and e function reverse(arr, s , e) { while(s < e) { var tem = arr[s]; arr[s] = arr[e]; arr[e] = tem; s = s + 1; e = e - 1; } } // Function to generate all // possible rotations of array function fun(arr , k) { var n = 4 - 1; var v = n - k; if (v >= 0) { reverse(arr, 0, v); reverse(arr, v + 1, n); reverse(arr, 0, n); } } // Driver code arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; for(i = 0; i < 4; i++) { fun(arr, i); document.write("["); for(j = 0; j < 4; j++) { document.write(arr[j] + ", "); } document.write("]<br>"); } // This code is contributed by 29AjayKumar </script>
[1, 2, 3, 4] [4, 1, 2, 3] [2, 3, 4, 1] [3, 4, 1, 2]
Complejidad Temporal: O (N 2 )
Espacio Auxiliar: O (1)
Consulte el artículo completo sobre Imprimir todas las rotaciones posibles de una array determinada para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA