文档讲解:代码随想录 (programmercarl.com)
视频讲解:代码随想录的个人空间-代码随想录个人主页-哔哩哔哩视频 (bilibili.com)
LeetCode 309.最佳买卖股票时机含冷冻期
题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)
解题思路:
class Solution {
public:
int maxProfit(vector<int>& prices) {
vector<vector<int>>dp(prices.size(),vector<int>(3,0));
dp[0][0]=-prices[0];
for(int i=1;i<prices.size();i++){
dp[i][0]=max(dp[i-1][0],dp[i-1][2]-prices[i]);
dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i]);
dp[i][2]=dp[i-1][1];
}
return max(dp[prices.size()-1][1],dp[prices.size()-1][2]);
}
};
LeetCode 714.买卖股票的最佳时机含手续费
题目链接:714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)
解题代码如下(下面代码来自代码随想录 (programmercarl.com)):
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
vector<vector<int>>dp(prices.size(),vector<int>(2,0));
dp[0][0]=-prices[0];
for(int i=1;i<prices.size();i++){
dp[i][0]=max(dp[i-1][0],dp[i-1][1]-prices[i]);
dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i]-fee);
}
return max(dp[prices.size()-1][0],dp[prices.size()-1][1]);
}
};