PHP Program To Find Next Greater Element
Given an array, print the Next Greater Element (NGE) for every element. The Next greater Element for an element x is the first greater element on the right side of x in the array. Elements for which no greater element exist, consider the next greater element as -1.
For an array, the rightmost element always has the next greater element as -1. For an array that is sorted in decreasing order, all elements have the next greater element as -1.
For the input array [4, 5, 2, 25], the next greater elements for each element are as follows.
Element NGE
4 --> 5
5 --> 25
2 --> 25
25 --> -1
For the input array [13, 7, 6, 12}, the next greater elements for each element are as follows.
Element NGE
13 --> -1
7 --> 12
6 --> 12
12 --> -1
Simple Method – Using Two Loops
The outer loop picks all the elements one by one. The inner loop looks for the first greater element for the element picked by the outer loop. If a greater element is found then that element is printed as next, otherwise, -1 is printed.
Below is the implementation of the above approach:
<?php
// Simple PHP program to print next
// greater elements in a given array
/* Prints element and NGE pair for
all elements of arr[] of size n */
function printNGE($arr, $n) {
for ($i = 0; $i < $n; $i++) {
$next = -1;
for ($j = $i + 1; $j < $n; $j++) {
if ($arr[$i] < $arr[$j]) {
$next = $arr[$j];
break;
}
}
echo $arr[$i] . " -- " . $next . "\n";
}
}
// Driver Code
$arr = array(11, 13, 21, 3);
$n = count($arr);
printNGE($arr, $n);
?>
Output
11 -- 13 13 -- 21 21 -- -1 3 -- -1
Time Complexity: O(N2)
Auxiliary Space: O(1)
Please refer complete article on Next Greater Element for more details!