If you want to practice data structure and algorithm programs, you can go through 100+ java coding interview questions.
[toc]
Given an array of integers representing stock price on a single day, find max profit that can be earned by 1 transaction.
So you need to find a pair (buyDay,sellDay) where buyDay < = sellDay and it should maximize the profit.
For example:
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 :lowestPriceTillThatDayand maxProfit.
lowestPriceTillThatDaywill be initialise to arr[0].- Iterate over stock price array
arr[] - If
current elementis greater thanlowestPriceTillThatDay- calculate profit.
- If
profitis greater than maxProfit then update themaxProfit.
- If
current elementis lesser thanlowestPriceTillThatDay- update
lowestPriceTillThatDaywithcurrent element.
- update
- We will get
maxProfitin 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
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;
}
}
When you run above program, you will get below output:
Maximum profit :87
That’s all about Stock Buy Sell to Maximize Profit.