# Best time to buy and Sell stock in java

## Best time to buy and Sell stock in Java

Here, in this page we will discuss the program to find the best time to buy and sell stock in C  We are given with an array represents the cost of a stock on each day is given in an array, find the max profit that you can make by buying and selling in those days.

Example :

Input: Prices[ ] = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.

` ` ## Algorithm :

• Take the size of the array from the user and store it in variable say n.
• Now, declare an array of size n and takes n integer value from the user and store them in array.
• Create an array named max_sp of size equals size of price array and a variable max and initialize it as the minimum value.
• Start from the last index in price array.
1. If prices[i] is greater than max
1. Update max as prices[i] and make max_sp[i] as minimum value
2. Else if price[i] is not greater than max
1. Update max_sp[i] = max.
• After the pre computation, we follow the naive approach and replace the inner nested loop by using the max_sp array that we just created.
• Print value of max.

## Code in Java

Run
```public class Main {
static int findMaximumProfit(int[] prices, int i, int k, int buy, int[][] v) {
// If no stock can be chosen
if (i >= prices.length || k <= 0) return 0;
else
return v[i][buy] = Math.max(-prices[i] + findMaximumProfit(prices, i + 1, k, nbuy, v),
findMaximumProfit(prices, i + 1, k, (int)(buy), v));
}
// Otherwise
else {
else
Math.max(prices[i] + findMaximumProfit(prices, i + 1, k - 1, nbuy, v),
findMaximumProfit(prices, i + 1, k, buy, v));
}
}
static int maxProfit(int[] prices) {
int n = prices.length;
int[][] v = new int[n];
for (int i = 0; i < v.length; i++) {
v[i] = -1;
v[i] = -1;
}
return findMaximumProfit(prices, 0, 1, 1, v);
}
// Driver Code
public
static void main(String[] args) {
// Given prices
int[] prices = {7, 1, 5, 3, 6, 4};
int ans = maxProfit(prices);
`5`