mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
52 lines
1.5 KiB
Java
52 lines
1.5 KiB
Java
package com.thealgorithms.others;
|
|
|
|
/**
|
|
* Provides a method to perform a right rotation on an array.
|
|
* A left rotation operation shifts each element of the array
|
|
* by a specified number of positions to the right.
|
|
*
|
|
* https://en.wikipedia.org/wiki/Right_rotation *
|
|
*/
|
|
public final class ArrayRightRotation {
|
|
private ArrayRightRotation() {
|
|
}
|
|
|
|
/**
|
|
* Performs a right rotation on the given array by the specified number of positions.
|
|
*
|
|
* @param arr the array to be rotated
|
|
* @param k the number of positions to rotate the array to the left
|
|
* @return a new array containing the elements of the input array rotated to the left
|
|
*/
|
|
public static int[] rotateRight(int[] arr, int k) {
|
|
if (arr == null || arr.length == 0 || k < 0) {
|
|
throw new IllegalArgumentException("Invalid input");
|
|
}
|
|
|
|
int n = arr.length;
|
|
k = k % n; // Handle cases where k is larger than the array length
|
|
|
|
reverseArray(arr, 0, n - 1);
|
|
reverseArray(arr, 0, k - 1);
|
|
reverseArray(arr, k, n - 1);
|
|
|
|
return arr;
|
|
}
|
|
|
|
/**
|
|
* Performs reversing of a array
|
|
* @param arr the array to be reversed
|
|
* @param start starting position
|
|
* @param end ending position
|
|
*/
|
|
private static void reverseArray(int[] arr, int start, int end) {
|
|
while (start < end) {
|
|
int temp = arr[start];
|
|
arr[start] = arr[end];
|
|
arr[end] = temp;
|
|
start++;
|
|
end--;
|
|
}
|
|
}
|
|
}
|