本文共 1669 字,大约阅读时间需要 5 分钟。
转自https://oj.leetcode.com/problems/best-time-to-buy-and-sell-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 sell the stock before you buy again).* **********************************************************************************/class Solution {public: // Dynamic Programming // // Considering prices[n], and we have a position "i", we could have // 1) the maxProfit1 for prices[0..i] // 2) the maxProfit2 for proices[i..n] // // So, // for 1) we can go through the prices[n] forwardly. // forward[i] = max( forward[i-1], price[i] - lowestPrice[0..i] ) // for 2) we can go through the prices[n] backwoardly. // backward[i] = max( backward[i+1], highestPrice[i..n] - price[i]) // int maxProfit(vector &prices) { if (prices.size()<=1) return 0; int n = prices.size(); vector forward(n); forward[0] = 0; int lowestBuyInPrice = prices[0]; for(int i=1; i
转载地址:http://tsdoi.baihongyu.com/