Say you has an array for which the i-th element is the price of a given-stock on day I.
Design an algorithm to find the maximum profit. You are in most of the transactions.
Note:
Engage in multiple transactions on the same time (ie, you must sell the stock before you buy again).
The extension of the previous question, the requirement is to buy and sell only two times, and then find the maximum profit.
With dynamic planning, the front and back are calculated once, and then the results are calculated.
Public classSolution { Public intMaxprofit (int[] prices) { intLen =prices.length; if(Len < 2 ) return0; int[] Preprofit =New int[Len]; int[] Maxprofit =New int[Len]; intCur = prices[0]; preprofit[0] = 0; for(inti = 1;i<len;i++) {cur=math.min (Cur,prices[i]); Preprofit[i]= Math.max (Preprofit[i-1],prices[i]-cur); } cur= Prices[len-1]; Maxprofit[len-1] = 0; for(inti = len-2;i>=0;i--) {cur=Math.max (Cur,prices[i]); Maxprofit[i]= Math.max (Maxprofit[i+1],cur-Prices[i]); } intresult = 0; for(inti = 0;i<len;i++) {result= Math.max (preprofit[i]+Maxprofit[i],result); } returnresult; }}
Leetcode 123. best time to Buy and Sell Stock III-----java