Last Updated: 10 Nov, 2020

Leaders in an array

Easy
Asked in companies
GenpactQuikrInfosys

Problem statement

Given a sequence of numbers. Find all leaders in sequence. An element is a leader if it is strictly greater than all the elements on its right side.

Note:
1. Rightmost element is always a leader.

2. The order of elements in the return sequence must be the same as the given sequence
Example:
The given sequence is 13, 14, 3, 8, 2 .

13 Not a leader because on the right side 14 is greater than 13.

14 lt is a leader because no one greater element in the right side.

3 Not a leader because on the right side 8 are greater than 3.

8 It is a leader because no one greater element on the right side.

2 It is a leader because it is the rightmost element in a sequence.

Hence there are 3 leaders in the above sequence which are 14, 8, 2.
Input format:
The first line of input contains an integer ‘T’ denoting the number of test cases.

The first line of each test case contains an integer ‘N’ denoting the number of elements in the given sequence. 

The second line of each test case contains ‘N’ space-separated integers denoting the elements in the sequence.
Output Format:
For each test case, print a sequence of all leaders separated by space on a separate line. 
Note:
You don't need to print anything, it has been already taken care of. Just implement the given function.
Constraints:
1 <= T <= 50
1 <= N <= 10^4
-10^9 <= ELEMENTS[i] <= 10^9

Where ‘ELEMENTS[i]’ denotes an element at position ‘i’ in the sequence.

Time limit: 1 sec

Approaches

01 Approach

The steps are as follows:

 

  • We use two loops.
  • The outer loop runs from left to right of the sequence using a variable INDEX’, and in a single instance of the iteration ‘INDEX’ will represent the index of each element of the sequence.
  • The inner loop runs from ‘INDEX + 1’ to the end of the sequence using a variable ‘rightIndex’, in which ‘rightIndex’ will point to the element that is on the right side of the element and will be picked by the outer loop.
  • If element picked by the outer loop is greater than all the elements of picked by inner loop then element picked by the outer loop is the leader.
  • Finally, return the answer sequence.

02 Approach

  • Start iterating from right to left in the sequence.
  • Keep the highest element in a variable ‘MAXIMUM’.
  • If we find any element greater than the variable ‘MAXIMUM’ then update the ‘MAXIMUM’ variable to the current element and add the current element in the ‘ANSWER’ sequence.
  • Finally, return the ‘ANSWER’ sequence.