力扣 309. 买卖股票的最佳时机含冷冻期

题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/

C++题解:动态规划

状态1:表示持有股票。更新为之前持有股票(dp[i-1][0])或者不持有股票且不处于冷冻期后买入(dp[i-1][2]-prices[i])。

状态2:表示不持有股票且处于冷冻期,即卖出。更新为持有股票后卖出(dp[i-1][0]+prices[i])。

状态3:表示不持有股票且不处于冷冻期,即保持之前已经持有股票的状态。更新为不持有股票的两个状态较大值(dp[i-1][1] 或 dp[i-1][2])。

返回值为状态2或状态3中的较大值。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        if(n <= 1) return 0;
        // dp[i][0]表示持有股票,dp[i][1]表示不持有股票且处于冷冻期-即卖出,dp[i][2]表示不持有股票且不处于冷冻期,即保持之前已经持有股票的状态
        vector<vector<int>> dp(n, vector<int>(3, 0));
        dp[0][0] = -prices[0];
        for(int i = 1; i < n; i++){
            dp[i][0] = max(dp[i-1][0], dp[i-1][2]-prices[i]); cout<<dp[i][0]<<" ";
            dp[i][1] = dp[i-1][0] + prices[i]; cout<<dp[i][1]<<" ";
            dp[i][2] = max(dp[i-1][1], dp[i-1][2]); cout<<dp[i][2]<<" "<<i<<endl;
        }
        return max(dp[n-1][1], dp[n-1][2]);
    }
};

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 05:58:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 05:58:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 05:58:04       87 阅读
  4. Python语言-面向对象

    2024-02-21 05:58:04       96 阅读

热门阅读

  1. Nginx被动健康检测配置

    2024-02-21 05:58:04       47 阅读
  2. flink operator 1.7 更换日志框架log4j 到logback

    2024-02-21 05:58:04       48 阅读
  3. 设计模式——单例模式8种实现

    2024-02-21 05:58:04       56 阅读
  4. 力扣爆刷第73天--动态规划

    2024-02-21 05:58:04       59 阅读
  5. vDPA资料/文档/博客 链接

    2024-02-21 05:58:04       62 阅读
  6. 闲鱼商品详情接口api

    2024-02-21 05:58:04       51 阅读
  7. Leetcode 740. Delete and Earn

    2024-02-21 05:58:04       47 阅读
  8. WordPress有没有必要选择付费主题

    2024-02-21 05:58:04       58 阅读
  9. element-plus日期选择器英文改成中文

    2024-02-21 05:58:04       57 阅读
  10. python-adb-getevent转sendevent

    2024-02-21 05:58:04       49 阅读