Skip to content

refactor: ArrayLeftRotationTest #5389

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Aug 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 26 additions & 16 deletions src/main/java/com/thealgorithms/others/ArrayLeftRotation.java
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
package com.thealgorithms.others;

/*
* A left rotation operation on an array
* shifts each of the array's elements
* given integer n unit to the left.
/**
* Provides a method to perform a left rotation on an array.
* A left rotation operation shifts each element of the array
* by a specified number of positions to the left.
*
* @author sangin-lee
*/

public final class ArrayLeftRotation {
private ArrayLeftRotation() {
}

/*
* Returns the result of left rotation of given array arr and integer n
*
* @param arr : int[] given array
*
* @param n : int given integer
/**
* Performs a left rotation on the given array by the specified number of positions.
*
* @return : int[] result of left rotation
* @param arr the array to be rotated
* @param n 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[] rotateLeft(int[] arr, int n) {
int size = arr.length;
int[] dst = new int[size];

// Handle cases where array is empty or rotation count is zero
if (size == 0 || n <= 0) {
return arr.clone();
}

// Normalize the number of rotations
n = n % size;
if (n == 0) {
return arr.clone();
}

int[] rotated = new int[size];

// Perform rotation
for (int i = 0; i < size; i++) {
dst[i] = arr[n];
n = (n + 1) % size;
rotated[i] = arr[(i + n) % size];
}
return dst;

return rotated;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,11 @@ void testForHigherSizeStep() {
int[] result = ArrayLeftRotation.rotateLeft(arr, n);
assertArrayEquals(expected, result);
}

@Test
void testForEmptyArray() {
int[] arr = {};
int[] result = ArrayLeftRotation.rotateLeft(arr, 3);
assertArrayEquals(arr, result);
}
}