Maximum difference between two elements such that larger element appears after the smaller number

If you want to practice data structure and algorithm programs, you can go through 100+ java coding interview questions.

Given array of integers, find Maximum difference between two elements such that larger element appears after the smaller number
For example:

int arr[]={14, 12, 70, 15, 95, 65, 22, 30};
Max Difference =95-12 = 83

Algorithm:

Lets say we have array arr[] of stock prices.
We will track two variable :minElementTillNow and maxDifference.

  • minElementTillNow will be initialise to arr[0].
  • Iterate over  arr[]
  • If current element is greater than minElementTillNow
    • calculate difference.
    • If difference is greater than maxDifference then update the maxDifference.
  • If current element is lesser than minElementTillNow
    • update minElementTillNow with current element.
  • We will get maxDifference in the end.
public static int calculateMaxDifferenceBetweenTwoElements(int[] arr)
 {
 int minElementTillNow=arr[0];
 int maxDifference=Integer.MIN_VALUE;
 for (int i = 0; i < arr.length; i++) {
 int difference=0;
 if(arr[i] >minElementTillNow)
 {
 difference=arr[i]-minElementTillNow;
 if(difference > maxDifference)
 {
 maxDifference=difference;
 }
 }
 else
 {
 minElementTillNow=arr[i];
 }
 }
 return maxDifference;
 }

Java Program to find maximum difference between two elements :

package org.arpit.java2blog;

public class MaxDifferenceMain {

 public static void main(String[] args) {
  int arr[]={14, 12, 70, 15, 95, 65, 22, 30};
  System.out.println("Maximum difference between two elements : "+calculateMaxDifferenceBetweenTwoElements(arr));

 }
 public static int calculateMaxDifferenceBetweenTwoElements(int[] arr)
 {
  int minElementTillNow=arr[0];
  int maxDifference=Integer.MIN_VALUE;
  for (int i = 0; i < arr.length; i++) {
   int difference=0;
   if(arr[i] >minElementTillNow)
   {
    difference=arr[i]-minElementTillNow;
    if(difference > maxDifference)
    {
     maxDifference=difference;
    }
   }
   else
   {
    minElementTillNow=arr[i];
   }
  }
  return maxDifference;
 }

}

When you run above program, you will get below output:

Maximum difference between two elements : 83
[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.