题目描述
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。
设计一个算法来计算你所能获得的最大利润。你最多可以完成两笔交易。
输入样例:
[3,3,5,0,0,3,1,4]
输出:
6
C++ 代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size() == 0)
return 0;
vector<vector<int>> local(prices.size(), vector<int>(2+1, 0));
vector<vector<int>> global(prices.size(), vector<int>(2+1, 0));
for(int i = 1; i < prices.size(); i++){
int diff = prices[i] - prices[i-1];
for(int j = 1; j < 2+1; j++){
local[i][j] = max(global[i-1][j-1]+max(diff, 0), local[i-1][j]+diff);
global[i][j] = max(global[i-1][j], local[i][j]);
}
}
return global[prices.size()-1][2];
}
};