Java program to get the Next Greater Element in an array

Hi Everyone, it's been a long time since I have made a post. So here goes one. In this blog post, I will be writing about a Java program to get the next greater element in an array.

Expected output : For every element in the array, print the number which is the next greater to the element and which occurs after the element in position. If greater element is not found print -1.

Logic of the program :

  • Assign an element next greater value, "ngv"as -1.
  • For every element "i" in the array, loop from the next element till last element.
  • In the loop, if an element is greater than "i" and "ngv" is -1 , assign "ngv" as the element.
  • In the loop, if an element is greater than "i" and "ngv" is not -1, check whether "ngv" greater than that element. If so, assign "ngv" as the element.
  • Return "ngv".

The java program is as follows:

package com.blog.techjourney;

public class NextGreaterElement {

    public static void main(String[] args) {
        int ngeArray[] = {23,5,12,1,7,9,12,25,6};
        for(int i =0; i<ngeArray.length;i++)        
        {
            System.out.println(" Next greater element for "+ngeArray[i]+" = "+NextGreaterValue((ngeArray[i]),ngeArray,i));
        }
    }
    
    public static int NextGreaterValue(int num, int array[], int pos)
    {
        //-1 is returned if ngv is not found
        int ngv = -1;
        int len = array.length;
        
        int start = pos;
        //If the position is not the last position, adds one to the position
        if(start!=len)
        {
            pos=pos+1;
        }
        for(int i=pos; i<len; i++)        

        {
            if((array[i])>num)
            {
                if(ngv==-1)
                {
                    ngv=array[i];
                }
                
                else
                {
                    if(ngv>array[i])
                    {
                        ngv=array[i];
                    }
                }
            }
        }
        return ngv;
    }
}




The output of the above program is as follows:

 Next greater element for 23 = 25
 Next greater element for 5 = 6
 Next greater element for 12 = 25
 Next greater element for 1 = 6
 Next greater element for 7 = 9
 Next greater element for 9 = 12
 Next greater element for 12 = 25
 Next greater element for 25 = -1
 Next greater element for 6 = -1

I hope this blog post gives everyone a clear idea about how to find the next greater value in an array. Please comment below if you have any doubts or suggestions.

Thank you for reading the blog.

Comments

Popular posts from this blog

Difference between "diff" and "sdiff" commands in Unix

Anonymous classes in C++