Reverse The Array

Easy
0/40
Average time to solve is 15m
2152 upvotes
Asked in companies
UberSAP LabsInfosys

Problem statement

Given an array/list 'ARR' of integers and a position ‘M’. You have to reverse the array after that position.

Example:

We have an array ARR = {1, 2, 3, 4, 5, 6} and M = 3 , considering 0 
based indexing so the subarray {5, 6} will be reversed and our 
output array will be {1, 2, 3, 4, 6, 5}.
Detailed explanation ( Input/output format, Notes, Images )
Input format:
The very first line of input contains an integer ‘T’ denoting the number of test cases. 

The first line of every test case contains one integer ‘N’ where ‘N’ denotes the number of elements and an integer ‘M’ which denotes after which position the array has to be reversed.

The second line of every test case contains ‘N’ space-separated integers which denote the elements of input of array/list.
Output format:
For each test case, return the required array.

Output for each test case is printed on a separate line.
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.

Consider 0-based indexing of the array.
Constraints:
1 <= T <= 10
0 <= M <= N <= 5*10^4
-10^9 <= ARR[i] <= 10^9

Time Limit: 1 sec
Sample Input 1:
2
6 3
1 2 3 4 5 6
5 2
10 9 8 7 6
Sample Output 1:
1 2 3 4 6 5
10 9 8 6 7
Explanation 1:
For the first test case, 
Considering 0-based indexing we have M = 3 so the 
subarray[M+1 … N-1] has to be reversed.
Therefore the required output will be {1, 2, 3, 4, 6, 5}.

For the second test case, 
Considering 0-based indexing we have M = 2 so the 
subarray[M+1 … N-1] has to be reversed.
Therefore the required output will be {10, 9, 8, 6, 7}.
Sample Input 2:
2
7 3
1 4 5 6 6 7 7 
9 3
10 4 5 2 3 6 1 3 6
Sample Output 2:
 1 4 5 6 7 7 6
 10 4 5 2 6 3 1 6 3 


Hints:
1. Try to think by creating another array
2. Try to think which elements are beign swapped.
Approaches (2)
Reverse The Array

Approach:

  • Here we will use another array for reversing the elements.
  • The basic idea is just to store the elements up to the Mth position in the newly created array in the same way as they are given in the original array. Now after the Mth position store the elements in the reverse order.

 

Algorithm:

  • Firstly we will create another array say ‘BRR’ of the same size as the original array.
  • We will take one variable P = 0.
  • Now run a for loop in the forward direction from i=0 to i=M and fill the array ‘BRR’ in the same way as the original array i.e BRR[P++] = ARR[i]. Here ‘i’ will be incremented by one in each iteration.
  • Now run a second for loop in the reverse direction from j=N-1 to j=k+1 and fill the array ‘BRR’.Now the elements will be filled in the reversed order i.e BRR[p++] = ARR[j]. Here ‘j’ will be decremented by one in each iteration.
  • Finally copy back the array ‘BRR’ to array ‘ARR’ which the required array we want.
Time Complexity

O(N), where ‘N’ is the number of elements in the array.

 

Traversing over (M) elements will take O(M) time. Again traversing the array in the reverse direction over (N-M-1) elements will take (N-M-1) time. Thus total time complexity will be O(N).   

Space Complexity

O(N)

 

Another array is created for reversing the elements.

Video Solution
Unlock at level 3
(75% EXP penalty)
Code Solution
(100% EXP penalty)
Reverse The Array
Full screen
Console