Best Time to Buy and Sell Stock III

来源:互联网 发布:淘宝客服话术范文 编辑:程序博客网 时间:2024/05/22 09:05

题目没给例子,理解错题意了

用到了Best Time to Buy and Sell Stock I的动态规划方法,顺便复习一下

解题思路是:以第i天为分界线,计算第i天之前进行一次交易的最大收益preProfit[i],和第i天之后进行一次交易的最大收益postProfit[i],最后遍历一遍,max{preProfit[i] + postProfit[i]} (0≤i≤n-1)就是最大收益。

class Solution {public:int maxProfit(vector<int>& prices) {if (prices.size() < 2) return 0;int n = prices.size();vector<int> preProfit(n,0);vector<int> postProfit(n,0);int curMin = prices[0];for (int i = 1; i < n; i++) {curMin = min(curMin, prices[i]);preProfit[i] = max(preProfit[i - 1], prices[i] - curMin);}int curMax = prices[n - 1];for (int i = n - 2; i >= 0; i--) {curMax = max(curMax, prices[i]);postProfit[i] = max(postProfit[i + 1], curMax - prices[i]);}int maxProfit = 0;for (int i = 0; i < n; i++) {maxProfit = max(maxProfit, preProfit[i] + postProfit[i]);}return  maxProfit;}};


0 0