If you want to practice data structure and algorithm programs, you can go through 100+ java coding interview questions.
Table of Contents
So you need to find a pair (buyDay,sellDay) where buyDay < = sellDay and it should maximize the profit. For example:
1 2 3 4 5 |
int arr[]={14, 12, 70, 15, 99, 65, 21, 90}; Max profit can be gain by buying on 1st day(0 based indexing) and sell on the 4th day. Max profit = 99-12 =87 |
Stock Buy Sell to Maximize Profit Algorithm
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package org.arpit.java2blog; 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; } } |
1 2 3 |
Maximum profit :87 |
That’s all about Stock Buy Sell to Maximize Profit.
Was this post helpful?
Let us know if this post was helpful. Feedbacks are monitored on daily basis. Please do provide feedback as that\'s the only way to improve.