Best Time to Buy and Buy Stock III
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 encrypt the stock before you buy again ).
Master this idea:
1. Two-segment ideas
2. After going, you can process the thought of a series in the next step.
The time complexity is O (n). It is difficult to grasp this idea.
class Solution {public: int maxProfit(vector
&prices) {vector
profit(prices.size()+1);int buy = INT_MAX;for (int i = 0; i < prices.size(); i++){if (prices[i] < buy) buy = prices[i];else profit[i+1] = max(profit[i], prices[i]-buy);}int sale = INT_MIN , max_profit = 0, res = 0;for (int i = prices.size() - 1; i >= 0 ; i--){if (prices[i] > sale) sale = prices[i];else max_profit = max(max_profit, sale - prices[i]);profit[i+1] = profit[i+1]+ max_profit;res = max(profit[i+1], res);}return res;}};