Dada una array de números enteros arr[] de tamaño N y un número entero, la tarea es rotar los elementos de la array hacia la izquierda en d posiciones.
Ejemplos:
C++
#include <bits/stdc++.h> using namespace std; // Fuction to rotate array void Rotate(int arr[], int d, int n) { // Storing rotated version of array int temp[n]; // Keepig track of the current index // of temp[] int k = 0; // Storing the n - d elements of // array arr[] to the front of temp[] for (int i = d; i < n; i++) { temp[k] = arr[i]; k++; } // Storing the first d elements of array arr[] // into temp for (int i = 0; i < d; i++) { temp[k] = arr[i]; k++; } // Copying the elements of temp[] in arr[] // to get the final rotated array for (int i = 0; i < n; i++) { arr[i] = temp[i]; } } // Function to print elements of array void PrintTheArray(int arr[], int n) { for (int i = 0; i < n; i++) { cout << arr[i] << " "; } } // Driver code int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; int N = sizeof(arr) / sizeof(arr[0]); int d = 2; // Function calling Rotate(arr, d, N); PrintTheArray(arr, N); return 0; }
Python3
def rotate(L, d, n): k = L.index(d) new_lis = [] new_lis = L[k+1:]+L[0:k+1] return new_lis if __name__ == '__main__': arr = [1, 2, 3, 4, 5, 6, 7] d = 2 N = len(arr) # Function call arr = rotate(arr, d, N) for i in arr: print(i, end=" ")
C++
// C++ program to rotate an array by // d elements #include <bits/stdc++.h> using namespace std; /*Function to left rotate arr[] of size n by d*/ void Rotate(int arr[], int d, int n) { int p = 1; while (p <= d) { int last = arr[0]; for (int i = 0; i < n - 1; i++) { arr[i] = arr[i + 1]; } arr[n - 1] = last; p++; } } // Function to print an array void printArray(int arr[], int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; } // Driver code int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; int N = sizeof(arr) / sizeof(arr[0]); int d = 2; // Function calling Rotate(arr, d, N); printArray(arr, N); return 0; }
Java
/*package whatever //do not write package name here */ import java.io.*; class GFG { public static void rotate(int arr[], int d, int n) { int p = 1; while (p <= d) { int last = arr[0]; for (int i = 0; i < n - 1; i++) { arr[i] = arr[i + 1]; } arr[n - 1] = last; p++; } for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); } } public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; int N = arr.length; // Rotate 2 times int d = 2; // Function call rotate(arr, d, N); } } // contributed by keerthikarathan123
C++
// C++ program to rotate an array by // d elements #include <bits/stdc++.h> using namespace std; /*Function to get gcd of a and b*/ int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } /*Function to left rotate arr[] of size n by d*/ void leftRotate(int arr[], int d, int n) { /* To handle if d >= n */ d = d % n; int g_c_d = gcd(d, n); for (int i = 0; i < g_c_d; i++) { /* move i-th values of blocks */ int temp = arr[i]; int j = i; while (1) { int k = j + d; if (k >= n) k = k - n; if (k == i) break; arr[j] = arr[k]; j = k; } arr[j] = temp; } } // Function to print an array void printArray(int arr[], int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; } /* Driver program to test above functions */ int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; int n = sizeof(arr) / sizeof(arr[0]); // Function calling leftRotate(arr, 2, n); printArray(arr, n); return 0; }
C
// C program to rotate an array by // d elements #include <stdio.h> /* function to print an array */ void printArray(int arr[], int size); /*Function to get gcd of a and b*/ int gcd(int a, int b); /*Function to left rotate arr[] of siz n by d*/ void leftRotate(int arr[], int d, int n) { int i, j, k, temp; /* To handle if d >= n */ d = d % n; int g_c_d = gcd(d, n); for (i = 0; i < g_c_d; i++) { /* move i-th values of blocks */ temp = arr[i]; j = i; while (1) { k = j + d; if (k >= n) k = k - n; if (k == i) break; arr[j] = arr[k]; j = k; } arr[j] = temp; } } /*UTILITY FUNCTIONS*/ /* function to print an array */ void printArray(int arr[], int n) { int i; for (i = 0; i < n; i++) printf("%d ", arr[i]); } /*Function to get gcd of a and b*/ int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } /* Driver program to test above functions */ int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; leftRotate(arr, 2, 7); printArray(arr, 7); getchar(); return 0; }
Java
// Java program to rotate an array by // d elements class RotateArray { /*Function to left rotate arr[] of siz n by d*/ void leftRotate(int arr[], int d, int n) { /* To handle if d >= n */ d = d % n; int i, j, k, temp; int g_c_d = gcd(d, n); for (i = 0; i < g_c_d; i++) { /* move i-th values of blocks */ temp = arr[i]; j = i; while (true) { k = j + d; if (k >= n) k = k - n; if (k == i) break; arr[j] = arr[k]; j = k; } arr[j] = temp; } } /*UTILITY FUNCTIONS*/ /* function to print an array */ void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) System.out.print(arr[i] + " "); } /*Function to get gcd of a and b*/ int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } // Driver program to test above functions public static void main(String[] args) { RotateArray rotate = new RotateArray(); int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; rotate.leftRotate(arr, 2, 7); rotate.printArray(arr, 7); } } // This code has been contributed by Mayank Jaiswal
Python3
# Python3 program to rotate an array by # d elements # Function to left rotate arr[] of size n by d def leftRotate(arr, d, n): d = d % n g_c_d = gcd(d, n) for i in range(g_c_d): # move i-th values of blocks temp = arr[i] j = i while 1: k = j + d if k >= n: k = k - n if k == i: break arr[j] = arr[k] j = k arr[j] = temp # UTILITY FUNCTIONS # function to print an array def printArray(arr, size): for i in range(size): print("% d" % arr[i], end=" ") # Function to get gcd of a and b def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) # Driver program to test above functions arr = [1, 2, 3, 4, 5, 6, 7] n = len(arr) d = 2 leftRotate(arr, d, n) printArray(arr, n) # This code is contributed by Shreyanshi Arun
C#
// C# program for array rotation using System; class GFG { /* Function to left rotate arr[] of size n by d*/ static void leftRotate(int[] arr, int d, int n) { int i, j, k, temp; /* To handle if d >= n */ d = d % n; int g_c_d = gcd(d, n); for (i = 0; i < g_c_d; i++) { /* move i-th values of blocks */ temp = arr[i]; j = i; while (true) { k = j + d; if (k >= n) k = k - n; if (k == i) break; arr[j] = arr[k]; j = k; } arr[j] = temp; } } /*UTILITY FUNCTIONS*/ /* Function to print an array */ static void printArray(int[] arr, int size) { for (int i = 0; i < size; i++) Console.Write(arr[i] + " "); } /* Function to get gcd of a and b*/ static int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } // Driver code public static void Main() { int[] arr = { 1, 2, 3, 4, 5, 6, 7 }; leftRotate(arr, 2, 7); printArray(arr, 7); } } // This code is contributed by Sam007
Javascript
<script> // JavaScript program to rotate an array by // d elements /*Function to get gcd of a and b*/ function gcd( a, b){ if (b == 0) return a; else return gcd(b, a % b); } /*Function to left rotate arr[] of siz n by d*/ function leftRotate(arr, d, n){ /* To handle if d >= n */ d = d % n; let g_c_d = gcd(d, n); for (let i = 0; i < g_c_d; i++) { /* move i-th values of blocks */ let temp = arr[i]; let j = i; while (1) { let k = j + d; if (k >= n) k = k - n; if (k == i) break; arr[j] = arr[k]; j = k; } arr[j] = temp; } } // Function to print an array function printArray(arr, size){ for (let i = 0; i < size; i++) document.write(arr[i] +" "); } /* Driver program to test above functions */ let arr = [ 1, 2, 3, 4, 5, 6, 7 ]; let n = arr.length; // Function calling leftRotate(arr, 2, n); printArray(arr, n); </script>
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