首页 > 代码库 > Problem Best Time to Buy and Sell Stock III

Problem Best Time to Buy and Sell Stock III

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     }