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 :
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 7
We have discussed a solution in 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 times 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++) cout << (arr[(mod + i) % n]) << " " ; cout << "\n" ; } // Driver Code int 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 times import 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 times def 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 code arr = [ 1 , 3 , 5 , 7 , 9 ] n = len (arr) 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 Sachin Bisht |
C#
// C# implementation of left // rotation of an array K // number of times using 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 times function 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 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 ?> |
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 Rotation void 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 program int 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 times import java.io.*; import java.util.*; class GFG{ // Function for the k times left rotation static 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 code public 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 times from collections import deque # Function For The k Times Left Rotation def 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 Code if __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.
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.