Print left rotation of array in O(n) time and O(1) space
Given an array of size n and multiple values around which we need to left rotate the array. How to quickly print multiple left rotations?
Examples :
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.
Input :
arr[] = {1, 3, 5, 7, 9}
k1 = 1
k2 = 3
k3 = 4
k4 = 6
Output :
3 5 7 9 1
7 9 1 3 5
9 1 3 5 7
3 5 7 9 1
Input :
arr[] = {1, 3, 5, 7, 9}
k1 = 14
Output :
9 1 3 5 7We have discussed a solution in the below post.
Quickly find multiple left rotations of an array | Set 1
Method I:
The solution discussed above requires extra space. In this post, an optimized solution is discussed that doesn’t require extra space.
C++
// C++ implementation of left rotation of// an array K number of times#include <bits/stdc++.h>using namespace std;// Function to leftRotate array multiple timesvoid leftRotate(int arr[], int n, int k){ /* To get the starting point of rotated array */ int mod = k % n; // Prints the rotated array from start position for (int i = 0; i < n; i++) cout << (arr[(mod + i) % n]) << " "; cout << "\n";}// Driver Codeint main(){ int arr[] = { 1, 3, 5, 7, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); return 0;} |
Java
// JAVA implementation of left rotation// of an array K number of timesimport java.util.*;import java.lang.*;import java.io.*;class arr_rot { // Function to leftRotate array multiple // times static void leftRotate(int arr[], int n, int k) { /* To get the starting point of rotated array */ int mod = k % n; // Prints the rotated array from // start position for (int i = 0; i < n; ++i) System.out.print(arr[(i + mod) % n] + " "); System.out.println(); } // Driver code public static void main(String[] args) { int arr[] = { 1, 3, 5, 7, 9 }; int n = arr.length; int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); }}// This code is contributed by Sanjal |
Python
# Python implementation of left rotation of# an array K number of times# Function to leftRotate array multiple timesdef leftRotate(arr, n, k): # To get the starting point of rotated array mod = k % n s = "" # Prints the rotated array from start position for i in range(n): print str(arr[(mod + i) % n]), print return# Driver codearr = [1, 3, 5, 7, 9]n = len(arr)k = 2# Function CallleftRotate(arr, n, k)k = 3# Function CallleftRotate(arr, n, k)k = 4# Function CallleftRotate(arr, n, k)# This code is contributed by Sachin Bisht |
C#
// C# implementation of left// rotation of an array K// number of timesusing System;class GFG { // Function to leftRotate // array multiple times static void leftRotate(int[] arr, int n, int k) { // To get the starting // point of rotated array int mod = k % n; // Prints the rotated array // from start position for (int i = 0; i < n; ++i) Console.Write(arr[(i + mod) % n] + " "); Console.WriteLine(); } // Driver Code static public void Main() { int[] arr = { 1, 3, 5, 7, 9 }; int n = arr.Length; int k = 2; // Function Call leftRotate(arr, n, k); k = 3; // Function Call leftRotate(arr, n, k); k = 4; // Function Call leftRotate(arr, n, k); }}// This code is contributed by m_kit |
PHP
<?php// PHP implementation of// left rotation of an// array K number of times// Function to leftRotate// array multiple timesfunction leftRotate($arr, $n, $k){ // To get the starting // point of rotated array $mod = $k % $n; // Prints the rotated array // from start position for ($i = 0; $i < $n; $i++) echo ($arr[($mod + $i) % $n]) , " "; echo "\n";}// Driver Code$arr = array(1, 3, 5, 7, 9);$n = sizeof($arr);$k = 2;// Function CallleftRotate($arr, $n, $k);$k = 3;// Function CallleftRotate($arr, $n, $k);$k = 4;// Function CallleftRotate($arr, $n, $k);// This code is contributed by m_kit?> |
Javascript
<script>// JavaScript implementation of left rotation of// an array K number of times// Function to leftRotate array multiple timesfunction leftRotate(arr, n, k){ /* To get the starting point of rotated array */ let mod = k % n; // Prints the rotated array from start position for (let i = 0; i < n; i++) document.write((arr[(mod + i) % n]) + " "); document.write("\n");}// Driver Codelet arr = [ 1, 3, 5, 7, 9 ];let n = arr.length;let k = 2;// Function CallleftRotate(arr, n, k);document.write("<br>");k = 3;// Function CallleftRotate(arr, n, k);document.write("<br>");k = 4;// Function CallleftRotate(arr, n, k);</script> |
5 7 9 1 3 7 9 1 3 5 9 1 3 5 7
Method II:
In the below implementation we will use Standard Template Library (STL) which will be making the solution more optimize and easy to Implement.
C++
// C++ Implementation For Print Left Rotation Of Any Array K// Times#include <bits/stdc++.h>#include <iostream>using namespace std;// Function For The k Times Left Rotationvoid leftRotate(int arr[], int k, int n){ // Stl function rotates takes three parameters - the // beginning,the position by which it should be rotated // ,the end address of the array // The below function will be rotating the array left // in linear time (k%arraySize) times rotate(arr, arr + (k % n), arr + n); // Print the rotated array from start position for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << "\n";}// Driver programint main(){ int arr[] = { 1, 3, 5, 7, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; // Function Call leftRotate(arr, k, n); return 0;} |
Java
// Java implementation for print left// rotation of any array K timesimport java.io.*;import java.util.*;class GFG{ // Function for the k times left rotationstatic void leftRotate(Integer arr[], int k, int n){ // In Collection class rotate function // takes two parameters - the name of // array and the position by which it // should be rotated // The below function will be rotating // the array left in linear time // Collections.rotate()rotate the // array from right hence n-k Collections.rotate(Arrays.asList(arr), n - k); // Print the rotated array from start position for(int i = 0; i < n; i++) System.out.print(arr[i] + " ");}// Driver codepublic static void main(String[] args){ Integer arr[] = { 1, 3, 5, 7, 9 }; int n = arr.length; int k = 2; // Function call leftRotate(arr, k, n);}}// This code is contributed by chahattekwani71 |
Python3
# Python3 implementation to print left# rotation of any array K timesfrom collections import deque# Function For The k Times Left Rotationdef leftRotate(arr, k, n): # The collections module has deque class # which provides the rotate(), which is # inbuilt function to allow rotation arr = deque(arr) # using rotate() to left rotate by k arr.rotate(-k) arr = list(arr) # Print the rotated array from # start position for i in range(n): print(arr[i], end = " ")# Driver Codeif __name__ == '__main__': arr = [ 1, 3, 5, 7, 9 ] n = len(arr) k = 2 # Function Call leftRotate(arr, k, n)# This code is contributed by math_lover |
5 7 9 1 3
Note: the array itself gets updated after the rotation.
This article is contributed by Sridhar Babu and improved by Geetansh Sahni. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



