Left Rotation


Problem Statement :


A left rotation operation on an array of size n shifts each of the array's elements 1 unit to the left. Given an integer, d, rotate the array that many steps left and return the result.

Example:
d=2
arr=[1,2,3,4,5]

After 2 rotations, arr'=[3,4,5,1,2].


Function Description:

Complete the rotateLeft function in the editor below.

rotateLeft has the following parameters:
   1. int d: the amount to rotate by
   2. int arr[n]: the array to rotate

Returns 
   1. int[n]: the rotated array


Input Format:

The first line contains two space-separated integers that denote n, the number of integers, and d, the number of left rotations to perform.
The second line contains n space-separated integers that describe arr[].


Constraints:
   1. 1<=n<=10^5 
   2. 1<=d<=n 
   3. 1<=a[i]<=10^6



Solution :


                        In C:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {

    int N;
    int d;
    scanf("%d %d", &N, &d);  
    int A[N];
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &A[i]);    
    }
    for (int i = 0; i < N; i++)
    {
        printf("%d ", A[(i + d) % N]);    
    }
    puts("");
    
    return 0;
}







In C++:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int N, d, i;
    cin >> N >> d;
    int start = N - d;
    int *arr = new int[N];
    for (i=0; i<N; ++i) {
        if (start == N) start = 0;
        cin >> arr[start++];
    }
    for (i=0; i<N; ++i) cout << arr[i] << " ";
    return 0;
}







In Java:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int n = scan.nextInt();
        int[] A = new int[N];
        for (int i=0; i<N; ++i) {
            A[i] = scan.nextInt();
        }
        for (int i=0; i<n; ++i) {
            rotateArray(A);
        }
        for (int a : A) {
            System.out.print(a+" ");
        }
        System.out.println("");
    }
    
    private static void rotateArray(int[] A) {
        int t = A[0];
        for (int i=0; i<A.length-1; ++i) {
            A[i] = A[i+1];
        }
        A[A.length-1] = t;
    }
}







In Python 3:

n, d = map(int, input().split())
arr = [int(x) for x in input().split()]

for i in range(d):
    arr.append(arr[i])
    
for x in arr[d:]:
    print(x, end=' ')