代码随想录算法训练营第五十一天|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

代码随想录算法训练营第五十一天

121. 买卖股票的最佳时机

题目链接:121. 买卖股票的最佳时机

  1. 确定dp数组以及下标的含义:dp[i][0]:第i天不持有股票的最大利润,dp[i][1]:第i天持有股票的最大利润
  2. 确定递推公式:
    1. 第i天不持有有2种情况:前一天持有,当天卖出不持有;前一天不持有,当天也不持有。所以dp[i][0] = max(dp[i-1][1]+prices[i],dp[i-1][0])
    2. 第i天持有也有两种情况:前一天持有当天继续持有;前一天不持有,当天买入。所以dp[i][1] = max(dp[i-1][1],-prices[i])。(只买卖一次)
  3. dp数组如何初始化:第一天不持有就是dp[0][0] = 0;第一天持有就是第一天买入dp[0][1] = -prices[0]
  4. 确定遍历顺序:从前向后遍历。
  5. 打印dp数组。
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>>dp(prices.size(),vector<int>(2,0));
        dp[0][0] = 0;
        dp[0][1] = -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],-prices[i]);
        }
        return dp[prices.size()-1][0];
    }
};

122.买卖股票的最佳时机II

题目链接:122.买卖股票的最佳时机II

  1. 确定dp数组以及下标的含义:dp[i][0]:第i天不持有股票的最大利润,dp[i][1]:第i天持有股票的最大利润
  2. 确定递推公式:
    1. 第i天不持有有2种情况:前一天持有,当天卖出不持有;前一天不持有,当天也不持有。所以dp[i][0] = max(dp[i-1][1]+prices[i],dp[i-1][0])
    2. 第i天持有也有两种情况:前一天持有当天继续持有;前一天不持有,当天买入。所以dp[i][1] = max(dp[i-1][1],dp[i-1][0]-prices[i])。
  3. dp数组如何初始化:第一天不持有就是dp[0][0] = 0;第一天持有就是第一天买入dp[0][1] = -prices[0]
  4. 确定遍历顺序:从前向后遍历。
  5. 打印dp数组。
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>>dp(prices.size(),vector<int>(2,0));
        dp[0][0] = 0;
        dp[0][1] = -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][0]-prices[i],dp[i-1][1]);
        }
        return dp[prices.size()-1][0];
    }
};

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 23:38:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 23:38:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 23:38:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 23:38:05       20 阅读

热门阅读

  1. web前端三大主流框架

    2024-06-06 23:38:05       10 阅读
  2. springboot,配置类加载过程

    2024-06-06 23:38:05       10 阅读
  3. 跨境项目的SaaS实现:根据语言区分

    2024-06-06 23:38:05       8 阅读
  4. 卷积池化尺寸计算公式

    2024-06-06 23:38:05       9 阅读
  5. linux中的“->“符号

    2024-06-06 23:38:05       8 阅读
  6. vscode远程登录ubuntu linux报错,一直输入密码问题

    2024-06-06 23:38:05       9 阅读
  7. TensorRT教程(1)初探TensorRT

    2024-06-06 23:38:05       10 阅读
  8. Docker迁移默认存储目录(GPT-4o)

    2024-06-06 23:38:05       6 阅读
  9. 常见的项目模块以及项目流程

    2024-06-06 23:38:05       8 阅读
  10. vue基础知识点

    2024-06-06 23:38:05       10 阅读
  11. ubuntu22 部署zookeeper + kafka集群 & 配置开机自启动

    2024-06-06 23:38:05       11 阅读
  12. UML类图

    UML类图

    2024-06-06 23:38:05      9 阅读