Coding Practice

Arrays: Left Rotation | Java HackerRank

Arrays: Left Rotation

A left rotation operation on an array shifts each of the array's elements  unit to the left. For example, if  left rotations are performed on array [1,2,3,4,5], then the array would become [3,4,5,1,2]. Note that the lowest index item moves to the highest index in a rotation. This is called a circular array.

Given an array a of n integers and a number, d, perform d left rotations on the array. Return the updated array to be printed as a single line of space-separated integers.

Function Description

Complete the function rotLeft in the editor below.

rotLeft has the following parameter(s):

  • int a[n]: the array to rotate
  • int d: the number of rotations

Returns

  • int a'[n]: the rotated array

Input Format

The first line contains two space-separated integers n and d, the size of a and the number of left rotations.

The second line contains n space-separated integers, each an a[i].

Constraints

  • 1 <= n <= 105
  • 1 <= d <= n
  • 1 <= a[i] <= 106

Sample Input

5 4

1 2 3 4 5

Sample Output

5 1 2 3 4

Explanation

When we perform d = 4 left rotations, the array undergoes the following sequence of changes:

[1,2,3,4,5] -> [2,3,4,5,1] -> [3,4,5,1,2] -> [4,5,1,2,3] -> [5,1,2,3,4]

Sample Output
5 4
1 2 3 4 5
5 1 2 3 4


...Program finished with exit code 0
Press ENTER to exit console.
Source Code
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
static int[] rotLeft(int[] a, int d, int n) {
int i, j, k, b[] = new int[n], c[] = new int[n];
for(i = d, j = 0, k = 0; j < n; j++){
b[j] = a[j];
if(j > d-1){
a[k] = a[i];
k++;
i++;
}
else{
c[j] = b[j];
}
}
for(i = n-d, j = 0; i < n; i++, j++){
a[i] = c[j];
}
return a;
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String[] nd = scanner.nextLine().split(" ");
int n = Integer.parseInt(nd[0]);
int d = Integer.parseInt(nd[1]);
int[] a = new int[n];
String[] aItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int i = 0; i < n; i++) {
int aItem = Integer.parseInt(aItems[i]);
a[i] = aItem;
}
int[] result = rotLeft(a, d, n);
for (int i = 0; i < result.length; i++) {
bufferedWriter.write(String.valueOf(result[i]));
if (i != result.length - 1) {
bufferedWriter.write(" ");
}
}
bufferedWriter.newLine();
bufferedWriter.close();
scanner.close();
}
}
Sample Output
5 4
1 2 3 4 5
5 1 2 3 4


...Program finished with exit code 0
Press ENTER to exit console.

No comments:

Post a Comment

Change Theme
X