Given an array arr of size n , you need to find the next greater element for each element in the array.

Problem Note

  • The next greater element is the first greater element on an element’s right side in the array. e.g., an element arr[j] would be the next greater element of arr[i] such that arr[j] > arr[i] , i < j and j - i is minimum.
  • Return an array that consists of the next greater element of array arr .
  • Elements for which no greater element exist, consider the next greater element as -1.

Example 1

Input: arr[] = [1, 2, 3, 4, 5]
Output: [2, 3, 4, 5, -1]
Explanation: In the above example, the next greater element are as follows:
1 -> 2
2 -> 3
3 -> 4
4 -> 5
5 -> -1 (Since no element is greater than 5 on its right side)
So in the resultant array, we'll get [2, 3, 4, 5, -1] as output. 

Example 2

Input: arr[] = [12, 1, 0, 17, 10]
Output: [17, 17, 17, -1, -1]
Explanation: In the above example, the next greater element are as follows:
12 -> 17
1 -> 17
0 -> 17
17 -> -1 (Since no element is greater than 17 on its right side)
10 -> -1 (Since no element is greater than 10 on its right side)
So in the resultant array, we'll get [17, 17, 17, -1, -1] as output.