其他分享
首页 > 其他分享> > LeetCode 最佳买卖股票时机含冷冻期

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