Dada una array de tamaño n y múltiples valores alrededor de los cuales necesitamos rotar la array a la izquierda. ¿Cómo imprimir rápidamente múltiples rotaciones a la izquierda?
Ejemplos:
Input : arr[] = {1, 3, 5, 7, 9} k1 = 1 k2 = 3 k3 = 4 k4 = 6 Output : 3 5 7 9 1 7 9 1 3 5 9 1 3 5 7 3 5 7 9 1 Input : arr[] = {1, 3, 5, 7, 9} k1 = 14 Output : 9 1 3 5 7
Hemos discutido una solución en la siguiente publicación.
Encuentre rápidamente múltiples rotaciones a la izquierda de una array | Serie 1
Método I: La solución discutida anteriormente requiere espacio adicional. En esta publicación, se analiza una solución optimizada que no requiere espacio adicional.
Implementación:
C++
// C++ implementation of left rotation of // an array K number of times #include <bits/stdc++.h> using namespace std; // Function to leftRotate array multiple times void leftRotate(int arr[], int n, int k) { /* To get the starting point of rotated array */ int mod = k % n; // Prints the rotated array from start position for (int i = 0; i < n; i++) cout << (arr[(mod + i) % n]) << " "; cout << "\n"; } // Driver Code int main() { int arr[] = { 1, 3, 5, 7, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); return 0; }
Java
// JAVA implementation of left rotation // of an array K number of times import java.util.*; import java.lang.*; import java.io.*; class arr_rot { // Function to leftRotate array multiple // times static void leftRotate(int arr[], int n, int k) { /* To get the starting point of rotated array */ int mod = k % n; // Prints the rotated array from // start position for (int i = 0; i < n; ++i) System.out.print(arr[(i + mod) % n] + " "); System.out.println(); } // Driver code public static void main(String[] args) { int arr[] = { 1, 3, 5, 7, 9 }; int n = arr.length; int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); } } // This code is contributed by Sanjal
Python
# Python implementation of left rotation of # an array K number of times # Function to leftRotate array multiple times def leftRotate(arr, n, k): # To get the starting point of rotated array mod = k % n s = "" # Prints the rotated array from start position for i in range(n): print str(arr[(mod + i) % n]), print return # Driver code arr = [1, 3, 5, 7, 9] n = len(arr) k = 2 # Function Call leftRotate(arr, n, k) k = 3 # Function Call leftRotate(arr, n, k) k = 4 # Function Call leftRotate(arr, n, k) # This code is contributed by Sachin Bisht
C#
// C# implementation of left // rotation of an array K // number of times using System; class GFG { // Function to leftRotate // array multiple times static void leftRotate(int[] arr, int n, int k) { // To get the starting // point of rotated array int mod = k % n; // Prints the rotated array // from start position for (int i = 0; i < n; ++i) Console.Write(arr[(i + mod) % n] + " "); Console.WriteLine(); } // Driver Code static public void Main() { int[] arr = { 1, 3, 5, 7, 9 }; int n = arr.Length; int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); } } // This code is contributed by m_kit
PHP
<?php // PHP implementation of // left rotation of an // array K number of times // Function to leftRotate // array multiple times function leftRotate($arr, $n, $k) { // To get the starting // point of rotated array $mod = $k % $n; // Prints the rotated array // from start position for ($i = 0; $i < $n; $i++) echo ($arr[($mod + $i) % $n]) , " "; echo "\n"; } // Driver Code $arr = array(1, 3, 5, 7, 9); $n = sizeof($arr); $k = 2; // Function Call leftRotate($arr, $n, $k); $k = 3; // Function Call leftRotate($arr, $n, $k); $k = 4; // Function Call leftRotate($arr, $n, $k); // This code is contributed by m_kit ?>
Javascript
<script> // JavaScript implementation of left rotation of // an array K number of times // Function to leftRotate array multiple times function leftRotate(arr, n, k){ /* To get the starting point of rotated array */ let mod = k % n; // Prints the rotated array from start position for (let i = 0; i < n; i++) document.write((arr[(mod + i) % n]) + " "); document.write("\n"); } // Driver Code let arr = [ 1, 3, 5, 7, 9 ]; let n = arr.length; let k = 2; // Function Call leftRotate(arr, n, k); document.write("<br>"); k = 3; // Function Call leftRotate(arr, n, k); document.write("<br>"); k = 4; // Function Call leftRotate(arr, n, k); </script>
5 7 9 1 3 7 9 1 3 5 9 1 3 5 7
Complejidad de tiempo: O (N) , ya que estamos usando un bucle para atravesar N veces.
Espacio auxiliar: O(1), ya que no estamos utilizando ningún espacio adicional.
Método II: En la siguiente implementación, utilizaremos la Biblioteca de plantillas estándar (STL), que hará que la solución sea más optimizada y fácil de implementar.
Implementación:
C++
// C++ Implementation For Print Left Rotation Of Any Array K // Times #include <bits/stdc++.h> #include <iostream> using namespace std; // Function For The k Times Left Rotation void leftRotate(int arr[], int k, int n) { // Stl function rotates takes three parameters - the // beginning,the position by which it should be rotated // ,the end address of the array // The below function will be rotating the array left // in linear time (k%arraySize) times rotate(arr, arr + (k % n), arr + n); // Print the rotated array from start position for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << "\n"; } // Driver program int main() { int arr[] = { 1, 3, 5, 7, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; // Function Call leftRotate(arr, k, n); return 0; }
Java
// Java implementation for print left // rotation of any array K times import java.io.*; import java.util.*; class GFG{ // Function for the k times left rotation static void leftRotate(Integer arr[], int k, int n) { // In Collection class rotate function // takes two parameters - the name of // array and the position by which it // should be rotated // The below function will be rotating // the array left in linear time // Collections.rotate()rotate the // array from right hence n-k Collections.rotate(Arrays.asList(arr), n - k); // Print the rotated array from start position for(int i = 0; i < n; i++) System.out.print(arr[i] + " "); } // Driver code public static void main(String[] args) { Integer arr[] = { 1, 3, 5, 7, 9 }; int n = arr.length; int k = 2; // Function call leftRotate(arr, k, n); } } // This code is contributed by chahattekwani71
Python3
# Python3 implementation to print left # rotation of any array K times from collections import deque # Function For The k Times Left Rotation def leftRotate(arr, k, n): # The collections module has deque class # which provides the rotate(), which is # inbuilt function to allow rotation arr = deque(arr) # using rotate() to left rotate by k arr.rotate(-k) arr = list(arr) # Print the rotated array from # start position for i in range(n): print(arr[i], end = " ") # Driver Code if __name__ == '__main__': arr = [ 1, 3, 5, 7, 9 ] n = len(arr) k = 2 # Function Call leftRotate(arr, k, n) # This code is contributed by math_lover
C#
// C# program for the above approach using System; class GFG { static void leftRotate(int[] arr, int d, int n) { for (int i = 0; i < d; i++) leftRotatebyOne(arr, n); } static void leftRotatebyOne(int[] arr, int n) { int i, temp = arr[0]; for (i = 0; i < n - 1; i++) arr[i] = arr[i + 1]; arr[n - 1] = temp; } /* utility function to print an array */ static void printArray(int[] arr, int size) { for (int i = 0; i < size; i++) Console.Write(arr[i] + " "); } // Driver Code public static void Main() { int[] arr = { 1, 3, 5, 7, 9 }; int n = arr.Length; int k = 2; // Function call leftRotate(arr, k, n); printArray(arr, n); } } // This code is contributed by avijitmondal1998.
Javascript
<script> // Javascript program for the above approach function leftRotate(arr, d, n) { for (let i = 0; i < d; i++) leftRotatebyOne(arr, n); } function leftRotatebyOne(arr, n) { let i, temp = arr[0]; for (i = 0; i < n - 1; i++) arr[i] = arr[i + 1]; arr[n - 1] = temp; } /* utility function to print an array */ function printArray(arr, size) { for (let i = 0; i < size; i++) document.write(arr[i] + " "); } // Driver Code let arr = [ 1, 3, 5, 7, 9 ]; let n = arr.length; let k = 2; // Function call leftRotate(arr, k, n); printArray(arr, n); // This code is contributed by Samim Hossain Mondal. </script>
5 7 9 1 3
Nota: la array en sí se actualiza después de la rotación.
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
Este artículo es una contribución de Sridhar Babu y mejorado por Geetansh Sahni. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
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