## Wednesday, May 4, 2022

### Question 34 : Stock Buy Sell to Maximize Profit

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 than `lowestPriceTillThatDay`
• calculate profit.
• If `profit` is greater than maxProfit then update the `maxProfit`.
• If `current element` is lesser than `lowestPriceTillThatDay`
• update `lowestPriceTillThatDay` with `current element`.
• 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.