Dada una array, gire cíclicamente la array en el sentido de las agujas del reloj en uno.
Ejemplos:
Input: arr[] = {1, 2, 3, 4, 5} Output: arr[] = {5, 1, 2, 3, 4}
Los siguientes son pasos.
1) Almacene el último elemento en una variable, digamos x.
2) Desplace todos los elementos una posición por delante.
3) Reemplace el primer elemento de la array con x.
Javascript
<script> // JavaScript code for program // to cyclically rotate // an array by one function rotate(arr, n) { var x = arr[n-1], i; for(i = n-1; i > 0; i--) arr[i] = arr[i-1]; arr[0] = x; } var arr = [1, 2, 3, 4, 5]; var n = arr.length; document.write("Given array is <br>"); for(var i = 0; i< n; i++) document.write(arr[i] + " "); rotate(arr, n); document.write("<br>Rotated array is <br>"); for(var i = 0; i < n; i++) document.write(arr[i] + " "); </script>
Given array is 1 2 3 4 5 Rotated array is 5 1 2 3 4
Complejidad de tiempo: O(n) Como necesitamos iterar a través de todos los elementos
Espacio auxiliar: O(1)
La pregunta anterior también se puede resolver usando el algoritmo de inversión .
Otro enfoque:
Podemos usar dos punteros, digamos i y j , que apuntan al primer y último elemento de la array, respectivamente. Como sabemos, en la rotación cíclica traeremos el último elemento al primero y desplazaremos el resto hacia adelante, así que comience a intercambiar arr[i] y arr[j] y mantenga j fijo y i moviéndose hacia j. Repita hasta que i no sea igual a j.
Javascript
<script> // JavaScript code for program // to cyclically rotate // an array by one using pointers i,j function rotate(arr, n){ var i = 0 var j = n-1 while(i != j){ let temp; temp = arr[i]; arr[i] = arr[j]; arr[j]= temp; i =i+1 } } var arr = [1, 2, 3, 4, 5]; var n = arr.length; document.write("Given array is <br>"); for(var i = 0; i< n; i++) document.write(arr[i] + " "); rotate(arr, n); document.write("<br>Rotated array is <br>"); for(var i = 0; i < n; i++) document.write(arr[i] + " "); </script>
Given array is 1 2 3 4 5 Rotated array is 5 1 2 3 4
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
¡ Consulte el artículo completo sobre Programa para rotar cíclicamente una array en uno 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