Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Interesting Python Implementation for Next Greater Elements

  • Last Updated : 01 Sep, 2018

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 array. Elements for which no greater element exist, consider next greater element as -1.

Examples:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Input : 11, 13, 21, 3, 9, 12
Output :
11 --> 21
13 --> 21
21 --> -1
3 --> 12
9 --> 12
12 --> -1

Input : 10, 9, 8, 7, 6, 5, 4, 3, 2
Output :
10 --> -1
9 --> -1
8 --> -1
7 --> -1
6 --> -1
5 --> -1
4 --> -1
3 --> -1
2 --> -1

Below is a simple implementation in Python.




# Function for implementation of NGE
def NGE(arr):
  
    # Iterate through array to check for greatest element
    for i in range(0, len(arr)):
  
        # Find the maximum from i to end
        lead = max(arr[i:])
  
        # If max is same as the i'th number then 
        # print -1 else print the maximum
        if (arr[i] == lead):
            print("% d --> % d" % (arr[i], -1))
        else:
            print("% d --> % d" % (arr[i], lead))
  
  
# Driver program
def main():
    arr = [11, 13, 21, 3, 9, 12]
    NGE(arr)
    arr = [10, 9, 8, 7, 6, 5, 4, 3, 2]
    NGE(arr)
  
if __name__ == '__main__':
    main()

Note that the time complexity of above solution is O(n*n). We can optimize it in O(n) time using stack.




My Personal Notes arrow_drop_up
Recommended Articles
Page :