Tutorialspoint.dev

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 :

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

The solution discussed above requires extra space. In this post, an optimized solution is discussed that doesn’t require extra space.

C++

// CPP 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 << " ";
}
  
// Driver program
int main()
{
    int arr[] = { 1, 3, 5, 7, 9 };
    int n = sizeof(arr) / sizeof(arr[0]);
  
    int k = 2;
    leftRotate(arr, n, k);
  
    k = 3;
    leftRotate(arr, n, k);
  
    k = 4;
    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 program
    public static void main (String[] args) 
    {
            int arr[] = { 1, 3, 5, 7, 9 };
            int n = arr.length; 
  
            int k = 2;
            leftRotate(arr, n, k);
  
            k = 3;
            leftRotate(arr, n, k);
  
            k = 4;
            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 program
arr = [ 1, 3, 5, 7, 9 ]
n = len(arr)
k = 2
leftRotate(arr, n, k)
  
k = 3
leftRotate(arr, n, k)
  
k = 4
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;
        leftRotate(arr, n, k);
      
        k = 3;
        leftRotate(arr, n, k);
      
        k = 4;
        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 " ";
}
  
// Driver Code
$arr = array(1, 3, 5, 7, 9);
$n = sizeof($arr);
  
$k = 2;
leftRotate($arr, $n, $k);
  
$k = 3;
leftRotate($arr, $n, $k);
  
$k = 4;
leftRotate($arr, $n, $k);
  
// This code is contributed by m_kit
?>


Output :

5 7 9 1 3 
7 9 1 3 5 
9 1 3 5 7 

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter