This challenge is in Data Structures > Arrays > Left Rotation.

# Left Rotation

A *left rotation* operation on an array of size ** n** shifts each of the array’s elements

**unit to the left. For example, if**

*1***left rotations are performed on array**

*2***, then the array would become**

*[1,2,3,4,5]***.**

*[3,4,5,1,2]*Given an array of ** n** integers and a number,

**, perform**

*d***left rotations on the array. Then print the updated array as a single line of space-separated integers.**

*d*## Input Format

The first line contains two space-separated integers denoting the respective values of ** n** (the number of integers) and

**(the number of left rotations you must perform).**

*d*The second line contains

**space-separated integers describing the respective elements of the array’s initial state.**

*n*## Constraints

*1 <= n <= 10*^{5}*1 <= d <= n**1 <= a*_{i}<= 10^{6}

## Output Format

Print a single line of ** n** space-separated integers denoting the final state of the array after performing

**left rotations.**

*d*## Sample Input

[text]

5 4

1 2 3 4 5

[/text]

## Sample Output

[text]

5 1 2 3 4

[/text]

## 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]**

Thus, we print the array’s final state as a single line of space-separated values, which is 5 1 2 3 4.

# My Solution to this Challenge

I have two solutions.

**Solution #1**

This solution did not pass Test Case #8 because it was timing out due to the test case being super big. It was running fine (though a little slow) when running in my computer, but timing out in HackerRank.

Test Case #8 has a size of 73642 and the number for rotations are 60581

function processData(input) { const lines = input.split('\n'); const rotations = lines[0].split(' ')[1]; const numbers = lines[1].split(' '); for (var i=0; i<rotations; i++) { numbers.push(numbers.shift()); } let string = numbers.reduce((prev, number) => `${prev} ${number}` ,''); console.log(string.trim()); }

**Solution #2**

This solution passed all of the test cases.

function processData(input) { const lines = input.split('\n'); const size = lines[0].split(' ')[0]; const rotations = lines[0].split(' ')[1]; const numbers = lines[1].split(' '); let i = 0; const string = numbers .reduce((arr, number) => { arr[(i+(size-rotations))%size] = number; i++; return arr; },[]) .reduce((prev, number) => `${prev} ${number}` ,''); console.log(string.trim()); }

**Bonus**

With ES6 you can use spread syntax in console.log instead of using reduce helper to print the space separated numbers to console, but again, with Test Case #8 this was failing and running out of memory.

console.log(...numbers);

Like and share if you enjoyed this article!! ðŸ™‚