Javascript Program to Find Mth element after K Right Rotations of an Array
Last Updated :
21 Apr, 2023
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 d
function leftrotate(arr, d) {
arr.push.apply(arr, arr.splice(0, d));
}
// Function to right rotate the array by d
function rightrotate(arr, d) {
leftrotate(arr, arr.length - d);
}
// Function to return Mth element of
// array after K right rotations
function 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 code
let a = [ 1, 2, 3, 4, 5 ];
let N = a.length;
let K = 3, M = 2;
// Function call
console.log(getFirstElement(a, N, K, M));
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 rotations
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;
}
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 approach
class 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 rotations
def 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 code
a = [1, 2, 3, 4, 5]
N = 5
K = 3
M = 2
print(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 rotations
function 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));
}
}
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!
Similar Reads
Javascript Program to Find the Mth element of the Array after K left rotations Given non-negative integers K, M, and an array arr[] with N elements find the Mth element of the array after K left rotations. Examples: Input: arr[] = {3, 4, 5, 23}, K = 2, M = 1Output: 5Explanation:Â The array after first left rotation a1[ ] = {4, 5, 23, 3}The array after second left rotation a2[ ]
2 min read
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 a
11 min read
Javascript Program to Print array after it is right rotated K times Given an Array of size N and a values K, around which we need to right rotate the array. How to quickly print the right rotated array?Examples :Â Â Input: Array[] = {1, 3, 5, 7, 9}, K = 2. Output: 7 9 1 3 5 Explanation: After 1st rotation - {9, 1, 3, 5, 7} After 2nd rotation - {7, 9, 1, 3, 5} Input:
2 min read
Javascript Program to Find element at given index after a number of rotations An array consisting of N integers is given. There are several Right Circular Rotations of range[L..R] that we perform. After performing these rotations, we need to find element at a given index.Examples : Input : arr[] : {1, 2, 3, 4, 5} ranges[] = { {0, 2}, {0, 3} } index : 1 Output : 3 Explanation
4 min read
Javascript Program for Reversal algorithm for right rotation of an array Given an array, right rotate it by k elements.  After K=3 rotation Examples: Input: arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} k = 3Output: 8 9 10 1 2 3 4 5 6 7Input: arr[] = {121, 232, 33, 43 ,5} k = 2Output: 43 5 121 232 33Note : In the below solution, k is assumed to be smaller than or equal to n. W
2 min read
Find the Mth element of the Array after K left rotations Given non-negative integers K, M, and an array arr[] with N elements find the Mth element of the array after K left rotations. Examples: Input: arr[] = {3, 4, 5, 23}, K = 2, M = 1Output: 5Explanation: The array after first left rotation a1[ ] = {4, 5, 23, 3}The array after second left rotation a2[ ]
5 min read
Javascript Program for Search an element in a sorted and rotated array An element in a sorted array can be found in O(log n) time via binary search. But suppose we rotate an ascending order sorted array at some pivot unknown to you beforehand. So for instance, 1 2 3 4 5 might become 3 4 5 1 2. Devise a way to find an element in the rotated array in O(log n) time. Exam
7 min read
Javascript Program to Count of rotations required to generate a sorted array Given an array arr[], the task is to find the number of rotations required to convert the given array to sorted form.Examples: Input: arr[] = {4, 5, 1, 2, 3}Â Output: 2Â Explanation:Â Sorted array {1, 2, 3, 4, 5} after 2 anti-clockwise rotations. Input: arr[] = {2, 1, 2, 2, 2}Â Output: 1Â Explanation:Â So
4 min read
Javascript Program for Range sum queries for anticlockwise rotations of Array by K indices Given an array arr consisting of N elements and Q queries of the following two types: 1 K: For this type of query, the array needs to be rotated by K indices anticlockwise from its current state.2 L R: For this query, the sum of the array elements present in the indices [L, R] needs to be calculated
4 min read
Javascript Program for Queries for rotation and Kth character of the given string in constant time Given a string str, the task is to perform the following type of queries on the given string: (1, K): Left rotate the string by K characters.(2, K): Print the Kth character of the string. Examples: Input: str = "abcdefgh", q[][] = {{1, 2}, {2, 2}, {1, 4}, {2, 7}} Output: d e Query 1: str = "cdefghab
2 min read