LeetCode 最佳买卖股票时机含冷冻期
作者:互联网
dp[i][0] 表示到第 i 天不持股的最大利润,dp[i][1] 表示到第 i 天持股的最大利润,dp[i][2] 表示到第 i 天处于冷冻期的最大利润,表示第 i + 1 天不能买入。
初始化的时候整体初始化为 -INF 即可,持股即买下这一天的股票,直接减去 price[i] 即可。
class Solution { public: int maxProfit(vector<int>& prices) { vector<vector<int>> dp(prices.size()); for(auto &item : dp) { item.resize(3, -0x3f3f3f3f); // 0 不持股, 1 持股, 2 冷冻期 } for(int i = 0; i < prices.size(); ++ i) { if(i == 0) { dp[i][0] = 0; dp[i][1] = -prices[i]; } else { // i 的冷冻期是指, i + 1不可购买 dp[i][0] = max(dp[i - 1][0], dp[i - 1][2]); dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]); dp[i][2] = dp[i - 1][1] + prices[i]; } } return max(dp.back()[0], max(dp.back()[1], dp.back()[2])); } };
标签:持股,max,back,最佳,prices,冷冻,LeetCode,dp 来源: https://www.cnblogs.com/rookie-acmer/p/15169452.html