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).
Problem Solving Ideas:
Since it is a two-time deal, it is divided into two areas. First, according to the idea of a transaction to calculate the maximum value of the transaction, in an array, and then forward from the back, to find the matching conditions and the largest two, Java implementation is as follows:
public int Maxprofit (int[] prices) {if (prices.length = = 0) return 0;int[] Oneprofit = new Int[prices.length];int Buy_price = Prices[0], Profit = 0;for (int i = 1; i < prices.length; i++) {Buy_price = Math.min (Buy_price, prices[i]);p Rofit = M Ath.max (Profit, Prices[i]-buy_price); oneprofit[i] = profit;} int res = Oneprofit[prices.length-1];int Sell_price = prices[prices.length-1];p rofit = 0;for (int i = prices.length- 1; I >= 1; i--) {Sell_price = Math.max (Sell_price, prices[i]);p Rofit = Math.max (Profit, Sell_price-prices[i]); res = Math.max (res, p Rofit + oneprofit[i-1]);} return res;}
Java for Leetcode 123 best time to Buy and Sell Stock III