Javascript Program to Find Mth element after K Right Rotations of an Array

Given non-negative integers K, M, and an array arr[ ] consisting of N elements, the task is to find the Mth element of the array after K right rotations.
Examples:Â
Input: arr[] = {3, 4, 5, 23}, K = 2, M = 1Â
Output: 5Â
Explanation:Â
The array after first right rotation a1[ ] = {23, 3, 4, 5}Â
The array after second right rotation a2[ ] = {5, 23, 3, 4}Â
1st element after 2 right rotations is 5.
Input: arr[] = {1, 2, 3, 4, 5}, K = 3, M = 2Â
Output: 4Â
Explanation:Â
The array after 3 right rotations has 4 at its second position.Â
Naive Approach:Â
The simplest approach to solve the problem is to Perform Right Rotation operation K times and then find the Mth element of the final array.
Algorithm:
- Â Â Define a function named leftrotate that takes a reference to a vector of integers v and an integer d as input parameters.
- Â Â Reverse the first d elements of the vector v.
- Â Â Reverse the remaining elements of the vector v starting from index d to the end.
- Â Â Reverse the entire vector v.
- Â Â Define a function named rightrotate that takes a reference to a vector of integers v and an integer d as input parameters.
- Â Â Call the leftrotate function with the vector v and the length of the vector minus d as input parameters.
- Â Â Define a function named getFirstElement that takes an array of integers a, its size N, an integer K and an integer M as input parameters.
- Â Â Declare a vector of integers v.
- Â Â Add all the elements of the array a to the vector v.
- Â Â Loop K times.
- Â Â Call the rightrotate function with the vector v and 1 as input parameters.
- Â Â Return the Mth element of the vector v minus 1 as the output of the function.
- Â Â In the main function, define an array of integers a, its size N, an integer K, and an integer M.
- Â Â Initialize the values of the array a, N, K, and M.
- Â Â Call the getFirstElement function with the array a, N, K, and M as input parameters and print its output.
Below is the implementation of the approach:Â
Javascript
// JavaScript program to find the Mth element// of the array after K right rotations.Â
// Function to left rotate the array by dfunction leftrotate(arr, d) {Â Â Â Â arr.push.apply(arr, arr.splice(0, d));}Â
// Function to right rotate the array by dfunction rightrotate(arr, d) {Â Â Â Â leftrotate(arr, arr.length - d);}Â
// Function to return Mth element of// array after K right rotationsfunction getFirstElement(arr, N, K, M) {Â Â Â Â let v = [];Â Â Â Â for (let i = 0; i < N; i++)Â Â Â Â Â Â Â Â v.push(arr[i]);Â
    // Right rotate K times    while (K--) {        rightrotate(v, 1);    }Â
    // return Mth element    return v[M - 1];}Â
// Driver codelet a = [ 1, 2, 3, 4, 5 ];let N = a.length;let K = 3, M = 2;Â
// Function callconsole.log(getFirstElement(a, N, K, M)); |
4
Time Complexity: O(N * K)Â
Auxiliary Space: O(N)
Efficient Approach:Â
To optimize the problem, the following observations need to be made:Â
- If the array is rotated N times it returns the initial array again.
 For example, a[ ] = {1, 2, 3, 4, 5}, K=5Â
Modified array after 5 right rotation a5[ ] = {1, 2, 3, 4, 5}. Â
- Therefore, the elements in the array after Kth rotation is the same as the element at index K%N in the original array.
- If K >= M, the Mth element of the array after K right rotations isÂ
Â
 { (N-K) + (M-1) } th element in the original array. Â
- If K < M, the Mth element of the array after K right rotations is:Â
Â
 (M – K – 1) th  element in the original array. Â
Below is the implementation of the above approach:
C++
// C++ program to implement// the above approach#include <iostream>using namespace std;Â
// Function to return Mth element of// array after k right rotationsint getFirstElement(int a[], int N, int K, int M){       // The array comes to original state    // after N rotations    K %= N;    int index;Â
    // If K is greater or equal to M    if (K >= M)Â
        // Mth element after k right        // rotations is (N-K)+(M-1) th        // element of the array        index = (N - K) + (M - 1);Â
    // Otherwise    elseÂ
        // (M - K - 1) th element        // of the array        index = (M - K - 1);Â
    int result = a[index];Â
    // Return the result    return result;}int main(){    int a[] = { 1, 2, 3, 4, 5 };    int N = 5;    int K = 3, M = 2;    cout << getFirstElement(a, N, K, M);    return 0;}Â
// This code is contributed by nmkiniqw7b. |
Java
// Java program to implement// the above approachclass GFG {Â
  // Function to return Mth element of  // array after k right rotations  static int getFirstElement(int a[], int N, int K, int M)  {    // The array comes to original state    // after N rotations    K %= N;    int index;Â
    // If K is greater or equal to M    if (K >= M)Â
      // Mth element after k right      // rotations is (N-K)+(M-1) th      // element of the array      index = (N - K) + (M - 1);Â
    // Otherwise    elseÂ
      // (M - K - 1) th element      // of the array      index = (M - K - 1);Â
    int result = a[index];Â
    // Return the result    return result;  }Â
  // Driver Code  public static void main(String[] args)  {    int a[] = { 1, 2, 3, 4, 5 };    int N = 5;    int K = 3, M = 2;Â
    System.out.println(getFirstElement(a, N, K, M));  }}Â
// This code is contributed by nmkiniqw7b. |
Python
# python program to implement# the above approach# Function to return Mth element of# array after k right rotationsdef getFirstElement(a, N, K, M):       # The array comes to original state    # after N rotations    K %= N         # If K is greater or equal to M    if(K >= M):               # Mth element after k right rotations        index = (N - K) + (M - 1)    # otherwise    else:        # (M - K - 1) th element        # of the array        index = (M - K - 1)    result = a[index]    return resultÂ
# driver codea = [1, 2, 3, 4, 5]N = 5K = 3M = 2print(getFirstElement(a, N, K, M))Â
# This code is contributed by nmkiniqw7b. |
Javascript
<script>// JavaScript program to implement // the approachÂ
// Function to return Mth element of// array after k right rotationsfunction getFirstElement(a, N,                           K, M){    // The array comes to original state    // after N rotations    K %= N;    let index;        // If K is greater or equal to M    if (K >= M)            // Mth element after k right        // rotations is (N-K)+(M-1) th        // element of the array        index = (N - K) + (M - 1);        // Otherwise    else            // (M - K - 1) th element        // of the array        index = (M - K - 1);        let result = a[index];        // Return the result    return result;} Â
// Driver Code            let a = [ 1, 2, 3, 4, 5 ];           let N = 5;           let K = 3, M = 2;           document.write(getFirstElement(a, N, K, M));                                </script> |
C#
// C# program to implement// the above approachÂ
using System;Â
public class GFG{    // Function to return Mth element of    // array after k right rotations    public static int GetFirstElement(int[] a, int N, int K, int M)    {        // The array comes to original state        // after N rotations        K %= N;        int index;Â
        // If K is greater or equal to M        if (K >= M)        {            // Mth element after k right            // rotations is (N-K)+(M-1) th            // element of the array            index = (N - K) + (M - 1);        }        else        {            // (M - K - 1) th element            // of the array            index = (M - K - 1);        }Â
        int result = a[index];Â
        // Return the result        return result;    }Â
    public static void Main()    {        int[] a = { 1, 2, 3, 4, 5 };        int N = 5;        int K = 3;        int M = 2;        Console.WriteLine(GetFirstElement(a, N, K, M));    }} |
4
Â
Time complexity: O(1)Â
Auxiliary Space: O(1)
Â
Please refer complete article on Mth element after K Right Rotations of an Array for more details!
Â
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



