123.买卖股票的最佳时机III
class Solution {
public:
int maxProfit(vector<int>& prices) {
vector<int> dp(4,0);
dp[0] = -prices[0];
dp[2] = -prices[0];
for(int i=1; i<prices.size(); i++){
dp[0] = max(dp[0], -prices[i]);
dp[1] = max(dp[1], prices[i]+dp[0]);
dp[2] = max(dp[2], dp[1]-prices[i]);
dp[3] = max(dp[3], prices[i]+dp[2]);
}
return dp[3];
}
};
参考文章:代码随想录-123.买卖股票的最佳时机III
188.买卖股票的最佳时机IV
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
vector<int> dp(2*k+1,0);
for(int i = 1; i<=k; i++){
dp[2*i-1] = -prices[0];
}
for(int i=1; i<prices.size(); i++){
for(int j=1; j<=k; j++){
dp[2*j-1] = max(dp[2*j-1], dp[2*j-2]-prices[i]);
dp[2*j] = max(dp[2*j], dp[2*j-1]+prices[i]);
}
}
return dp[2*k];
}
};
参考文章:代码随想录- 188.买卖股票的最佳时机IV