Write a program to print all the LEADERS in the array. An element is leader if it is greater than all the elements to its right side. And the rightmost element is always a leader. For example int the array {16, 17, 4, 3, 5, 2}, leaders are 17, 5 and 2.

Let the input array be arr[] and size of the array be size.

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

Method 1 (Simple)
Use two loops. The outer loop runs from 0 to size – 1 and one by one picks all elements from left to right. The inner loop compares the picked element to all the elements to its right side. If the picked element is greater than all the elements to its right side, then the picked element is the leader.

## C++

```#include<iostream>
using namespace std;

/*C++ Function to print leaders in an array */
{
for (int i = 0; i < size; i++)
{
int j;
for (j = i+1; j < size; j++)
{
if (arr[i] <= arr[j])
break;
}
if (j == size) // the loop didn't break
cout << arr[i] << " ";
}
}

/* Driver program to test above function */
int main()
{
int arr[] = {16, 17, 4, 3, 5, 2};
int n = sizeof(arr)/sizeof(arr[0]);
return 0;
}
```

## Java

```class LeadersInArray
{
/*Java Function to print leaders in an array */
{
for (int i = 0; i < size; i++)
{
int j;
for (j = i + 1; j < size; j++)
{
if (arr[i] <= arr[j])
break;
}
if (j == size) // the loop didn't break
System.out.print(arr[i] + " ");
}
}

/* Driver program to test above functions */
public static void main(String[] args)
{
int arr[] = new int[]{16, 17, 4, 3, 5, 2};
int n = arr.length;
}
}
```

## Python

```# Python Function to print leaders in array

for i in range(0, size):
for j in range(i+1, size):
if arr[i]<=arr[j]:
break
if j == size-1: # If loop didn't break
print arr[i],

# Driver function
arr=[16, 17, 4, 3, 5, 2]

# This code is contributed by _Devesh Agrawal__
```

Output:
`17 5 2`

Time Complexity: O(n*n)

Method 2 (Scan from right)
Scan all the elements from right to left in array and keep track of maximum till now. When maximum changes it’s value, print it.

## C++

```#include <iostream>
using namespace std;

/* C++ Function to print leaders in an array */
{
int max_from_right =  arr[size-1];

/* Rightmost element is always leader */
cout << max_from_right << " ";

for (int i = size-2; i >= 0; i--)
{
if (max_from_right < arr[i])
{
max_from_right = arr[i];
cout << max_from_right << " ";
}
}
}

/* Driver program to test above function*/
int main()
{
int arr[] = {16, 17, 4, 3, 5, 2};
int n = sizeof(arr)/sizeof(arr[0]);
return 0;
}
```

## Java

```class LeadersInArray
{
/* Java Function to print leaders in an array */
{
int max_from_right =  arr[size-1];

/* Rightmost element is always leader */
System.out.print(max_from_right + " ");

for (int i = size-2; i >= 0; i--)
{
if (max_from_right < arr[i])
{
max_from_right = arr[i];
System.out.print(max_from_right + " ");
}
}
}

/* Driver program to test above functions */
public static void main(String[] args)
{
int arr[] = new int[]{16, 17, 4, 3, 5, 2};
int n = arr.length;
}
}

```

## Python

```# Python function to print leaders in array

max_from_right = arr[size-1]
print max_from_right,
for i in range( size-2, 0, -1):
if max_from_right < arr[i]:
print arr[i],
max_from_right = arr[i]

# Driver function
arr = [16, 17, 4, 3, 5, 2]

# This code contributed by _Devesh Agrawal__
```

Output
`2 5 17`

Time Complexity:
O(n)

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
1.6 Average Difficulty : 1.6/5.0
Based on 249 vote(s)