Given an array of integers representing stock price on single day, find max profit that can be earned by 1 transaction.
So you need to find pair (buyDay,sellDay) where buyDay < = sellDay and it should maximise the profit.
For example :
int arr[]={14, 12, 70, 15, 99, 65, 21, 90}; Max profit can be gain by buying at 1th day(0 based indexing) and sell at 4th day. Max profit = 99-12 =87
Lets say we have array arr[] of stock prices.
We will track two variables :
lowestPriceTillThatDay
and maxProfit
.lowestPriceTillThatDay
will be initialise to arr[0].- Iterate over stock price array
arr
[] - If
current element
is greater thanlowestPriceTillThatDay
- calculate profit.
- If
profit
is greater than maxProfit then update themaxProfit
.
- If
current element
is lesser thanlowestPriceTillThatDay
- update
lowestPriceTillThatDay
withcurrent element
.
- update
- We will get
maxProfit
in the end.
public static int calculateMaxProfit(int[] arr) { int lowestPriceTillThatDay = arr[0]; int maxProfit = Integer.MIN_VALUE; for (int i = 0; i < arr.length; i++) { int profit = 0; if (arr[i] > lowestPriceTillThatDay) { profit = arr[i] - lowestPriceTillThatDay; if (profit > maxProfit) { maxProfit = profit; } } else { lowestPriceTillThatDay = arr[i]; } } return maxProfit; }
Java Program for Stock Buy Sell to Maximize Profit
public class StockBuySellMain { public static void main(String[] args) { int arr[] = { 14, 12, 70, 15, 99, 65, 21, 90 }; System.out.println("Maximum profit :" + calculateMaxProfit(arr)); } public static int calculateMaxProfit(int[] arr) { int lowestPriceTillThatDay = arr[0]; int maxProfit = Integer.MIN_VALUE; for (int i = 0; i < arr.length; i++) { int profit = 0; if (arr[i] > lowestPriceTillThatDay) { profit = arr[i] - lowestPriceTillThatDay; if (profit > maxProfit) { maxProfit = profit; } } else { lowestPriceTillThatDay = arr[i]; } } return maxProfit; } }
When you run above program, you will get below output:
Maximum profit :87
Don't miss the next article!
Be the first to be notified when a new article or Kubernetes experiment is published.
Share This