Problem Description:
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most two transactions.
Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
Solution:
1 public int maxProfit(int[] prices) { 2 if (prices.length <= 1) return 0; 3 4 int[] profit = new int[prices.length + 1]; 5 int maxProfit = 0; 6 int low = prices[0]; 7 for (int i = 1; i < prices.length; i++) { 8 if (low > prices[i]) low = prices[i]; 9 maxProfit = Math.max(maxProfit, prices[i] - low); 10 profit[i] = maxProfit; 11 } 12 maxProfit = 0; 13 int st = prices[prices.length - 1]; 14 for (int i = prices.length - 2; i >= 0; i--) { 15 maxProfit = Math.max(maxProfit, profit[i] + st - prices[i]); 16 st = Math.max(st, prices[i]); 17 } 18 19 return maxProfit; 20 }
Problem Best Time to Buy and Sell Stock III
时间: 2024-10-03 09:57:26