Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Php Program for Leaders in an array

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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.
 

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. 
 

PHP




<?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
?>


Output: 

17 5 2

Time Complexity: O(n*n)

Auxiliary Space: O(1)

As constant extra space is used.
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:
 

PHP




<?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
?>


Output:

2 5 17

Time Complexity: O(n)

Auxiliary Space: O(n)

The extra space is used to store the elements of max_from_right array.

Please refer complete article on Leaders in an array for more details!


My Personal Notes arrow_drop_up
Last Updated : 20 Feb, 2023
Like Article
Save Article
Similar Reads
Related Tutorials