Leaders in an array

01 Jul, 2022
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 in 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. 
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++
Java
Python3
C#
PHP
Javascript
#include<iostream>using namespace std;  /*C++ Function to print leaders in an array */void printLeaders(int arr[], int size){    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]);    printLeaders(arr, n);    return 0;}
class LeadersInArray {    /*Java Function to print leaders in an array */    void printLeaders(int arr[], int size)     {        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)     {        LeadersInArray lead = new LeadersInArray();        int arr[] = new int[]{16, 17, 4, 3, 5, 2};        int n = arr.length;        lead.printLeaders(arr, n);    }}
# Python Function to print leaders in array   def printLeaders(arr,size):           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],end=' ')   # Driver function arr=[16, 17, 4, 3, 5, 2] printLeaders(arr, len(arr))   # This code is contributed by _Devesh Agrawal__ 
// C# program to print// leaders in arrayusing System;class GFG {    void printLeaders(int []arr,                       int size)     {        for (int i = 0; i < size; i++)         {            int j;            for (j = i + 1; j < size; j++)             {                if (arr[i] <=arr[j])                    break;            }                          // the loop didn't break            if (j == size)                 Console.Write(arr[i] + " ");        }    }      // Driver Code    public static void Main()     {        GFG lead = new GFG();        int []arr = new int[]{16, 17, 4, 3, 5, 2};        int n = arr.Length;        lead.printLeaders(arr, n);    }}  // This code is contributed by// Akanksha Rai(Abby_akku)
<?php// PHP Function to print// leaders in an array function printLeaders($arr, $size){    for ($i = 0; $i < $size; $i++)    {        for ($j = $i + 1;             $j < $size; $j++)        {            if ($arr[$i] <=$arr[$j])                break;        }                   // the loop didn't break        if ($j == $size)            echo($arr[$i] . " ");         }}  // Driver Code$arr = array(16, 17, 4, 3, 5, 2);$n = sizeof($arr);printLeaders($arr, $n);      // This code is contributed // by Shivi_Aggarwal?>
<script>  // Javascript Function to print leaders in an array  function printLeaders( arr, size){    for (let i = 0; i < size; i++)    {        let j;        for (j = i+1; j < size; j++)        {            if (arr[i] <=arr[j])                break;        }            if (j == size) // the loop didn't break            document.write(arr[i] + " ");  }}// driver code           let arr = [ 16, 17, 4, 3, 5, 2 ];         let n = arr.length;           // Function calling         printLeaders(arr, n);     </script>
17 5 2 
Time Complexity: O(n*n)
Chapters
descriptions off, selected
captions settings, opens captions settings dialog
captions off, selected
English
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
Auxiliary Space: O(1)Method 2 (Scan from right) Scan all the elements from right to left in an array and keep track of maximum till now. When maximum changes its value, print it.Below image is a dry run of the above approach: 
Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
#include <iostream>using namespace std;  /* C++ Function to print leaders in an array */void printLeaders(int arr[], int size){    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]);    printLeaders(arr, n);    return 0;}    
class LeadersInArray {    /* Java Function to print leaders in an array */    void printLeaders(int arr[], int size)    {        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)     {        LeadersInArray lead = new LeadersInArray();        int arr[] = new int[]{16, 17, 4, 3, 5, 2};        int n = arr.length;        lead.printLeaders(arr, n);    }}
# Python function to print leaders in arraydef printLeaders(arr, size):         max_from_right = arr[size-1]       print (max_from_right,end=' ')        for i in range( size-2, -1, -1):                if max_from_right < arr[i]:                    print (arr[i],end=' ')            max_from_right = arr[i]          # Driver functionarr = [16, 17, 4, 3, 5, 2]printLeaders(arr, len(arr))  # This code contributed by _Devesh Agrawal__
// C# program to find Leaders in an arrayusing System;  class LeadersInArray {          // C# Function to print leaders    // in an array     void printLeaders(int []arr, int size)    {        int max_from_right = arr[size - 1];          // Rightmost element is always leader        Console.Write(max_from_right +" ");              for (int i = size - 2; i >= 0; i--)        {            if (max_from_right < arr[i])                {                     max_from_right = arr[i];                Console.Write(max_from_right +" ");            }        }     }      // Driver Code    public static void Main(String[] args)     {        LeadersInArray lead = new LeadersInArray();        int []arr = new int[]{16, 17, 4, 3, 5, 2};        int n = arr.Length;        lead.printLeaders(arr, n);    }}  // This code is contributed // by Akanksha Rai(Abby_akku)
<?php// PHP Function to print// leaders in an array function printLeaders(&$arr, $size){    $max_from_right = $arr[$size - 1];      // Rightmost element     // is always leader     echo($max_from_right);    echo(" ");          for ($i = $size - 2;          $i >= 0; $i--)    {        if ($max_from_right < $arr[$i])            {                     $max_from_right = $arr[$i];            echo($max_from_right);            echo(" ");        }    } }  // Driver Code$arr = array(16, 17, 4, 3, 5, 2);$n = sizeof($arr);printLeaders($arr, $n);  // This code is contributed // by Shivi_Aggarwal?>
<script>      /* JavaScript Function to print leaders in an array */    function printLeaders(arr,size)    {        let max_from_right = arr[size-1];          /* Rightmost element is always leader */         document.write(max_from_right + " ");          for (let i = size-2; i >= 0; i--)        {            if (max_from_right < arr[i])            {                        max_from_right = arr[i];                document.write(max_from_right + " ");            }        }    }      /* Driver program to test above function*/      let arr = [16, 17, 4, 3, 5, 2];    let n = arr.length;    printLeaders(arr, n);      </script>
2 5 17 
Time Complexity: O(n) Auxiliary Space: O(1)
Method 3: 
In method 2, we get time complexity O(n), but the output we get is not in the same order as the elements appear in our input array, so to get out output in the same order as in the input array, we can use stack data structure.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>using namespace std;  /* C++ Function to print leaders in an array */void printLeaders(int arr[], int size){      /* create stack to store leaders*/      stack<int> sk;      sk.push(arr[size-1]);        for (int i = size-2; i >= 0; i--)    {        if(arr[i] > sk.top())        {                      sk.push(arr[i]);        }    }             /* print stack elements*/      /* run loop till stack is not empty*/      while(!sk.empty()){              cout<<sk.top()<<" ";          sk.pop();    }}  /* Driver program to test above function*/int main(){    int arr[] = {16, 17, 4, 3, 5, 2};    int n = sizeof(arr)/sizeof(arr[0]);    printLeaders(arr, n);    return 0;}  
17 5 2 
Time complexity: O(n)
Auxiliary space: O(n)
Leaders in an array | GeeksforGeeks - YouTubeGeeksforGeeks530K subscribersLeaders in an array | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.More videosMore videosYou're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 6:03•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=NyRZm1pzNmQ" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Shivi_Aggarwal
Akanksha_Rai
GuntupalliKoushik
hariprasath_1_17
jana_sayantan
CoderSaty
vaibhavrabadiya3
amartyaghoshgfg
iamharsh_tita011
chandramauliguptach
jaspreetsingh1847
Amazon
Payu
Arrays
Amazon
Payu
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Multidimensional Arrays in Java
Given an array A[] and a number x, check for pair in A[] with sum as x (aka Two Sum)
Introduction to Arrays
K'th Smallest/Largest Element in Unsorted Array | Set 1
Subset Sum Problem | DP-25
Introduction to Data Structures
Python | Using 2D arrays/lists the right way
Search an element in a sorted and rotated array
Find Second largest element in an array
Find the Missing Number