Rotate Array Right By K Positions

Write a program to rotate array by K Positions.

Example:

Input:  arr[] = {1,2,3,4,5,6,7}, k = 3
Output: [5,6,7,1,2,3,4]

Approach

C++

#include <bits/stdc++.h>
using namespace std;

void reverseArray(vector<int&arrint lowint high)
{
    while (low < high)
    {
        swap(arr[low]arr[high]);
        low++;
        high--;
    }
}
void rotateArrayRightByK(vector<int&arrint k)
{

    //reverse last k elements
    reverseArray(arrarr.size() - karr.size() - 1);

    //reverse the firt n-k elements
    reverseArray(arr0arr.size() - k - 1);

    //reverse the whole array
    reverseArray(arr0arr.size() - 1);
}
int main()
{
    vector<intarr = {1234567};

    int k = 3;

    k = k % arr.size();
    rotateArrayRightByK(arrk);
    cout << "[";
    for (int i = 0i < arr.size(); i++)
    {
        cout << arr[i];
        if (i != arr.size() - 1)
            cout << ",";
    }
    cout << "]";

    return 0;
}


No comments:

Post a Comment