Miscellaneous
Last updated
package src.main.java;
public class ArrayRotation {
// Function to calculate GCD of two numbers
private static int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// Function to left rotate array by d positions
private static void leftRotate(int[] arr, int d) {
int n = arr.length;
int gcd = gcd(n, d);
for (int i = 0; i < gcd; i++) {
int temp = arr[i];
int j = i;
while (true) {
int k = j + d;
if (k >= n)
k = k - n;
if (k == i)
break;
arr[j] = arr[k];
j = k;
}
arr[j] = temp;
}
}
// Utility function to print an array
private static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
int d = 2;
System.out.println("Original array:");
printArray(arr);
leftRotate(arr, d);
System.out.println("Array after left rotation by " + d + " positions:");
printArray(arr);
}
}