当前位置: 首页 > news >正文

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

动态规划

  • 思路:
    • 假设 dp[i][0] 是第 i 天手上没有股票时的最大利润, dp[i][1] 是第 i 天手上有 1 支股票的最大利润;
    • dp[i][0] 的迁移状态为:
      • dp[i - 1][0],前一天手上已经没有股票,没有发生交易;
      • dp[i - 1][1] + prices[i],前一天手上有 1 支股票,第 i 天将其卖掉获得收益 prices[i];
      • 所以, dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i])
    • 同理 dp[i][1] 的迁移状态:
      • dp[i - 1][1],前一天手上有1支股票,第 i 天继续持有,不发生交易;
      • dp[i - 1][0] - prices[i],前一天手上没有股票,第 i 天买入股票;
      • 所以,dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i])
    • 初始状态:
      • dp[0][0] = 0, dp[0][1] = -prices[0]
    • 使用动态规划方法将所有可能的值穷举出来,则最大的收益为 dp[size - 1][0]
class Solution {
public:int maxProfit(vector<int>& prices) {int size = prices.size();int dp[size][2];dp[0][0] = 0;dp[0][1] = -prices[0];for (int i = 1; i < size; ++i) {dp[i][0] = std::max(dp[i - 1][0], dp[i - 1][1] + prices[i]);dp[i][1] = std::max(dp[i - 1][1], dp[i - 1][0] - prices[i]);}return dp[size - 1][0];}
};

http://www.lryc.cn/news/273674.html

相关文章:

  • Go语言断言和类型查询
  • 02 Deep learning algorithm
  • 代码随想录算法训练营第二十四天 | 回溯算法
  • Spring Cloud Gateway 缓存区异常
  • Spring Boot依赖版本声明
  • Java项目:109SpringBoot超市仓管系统
  • 【React系列】Redux(三) state如何管理
  • 3D 纹理的综合指南
  • LLM之RAG实战(十一)| 使用Mistral-7B和Langchain搭建基于PDF文件的聊天机器人
  • VLOOKUP的使用方法
  • 数据加密、端口管控、行为审计、终端安全、整体方案解决提供商
  • 编码器原理详解
  • linux下docker搭建mysql8
  • 书生·浦语大模型实战1
  • 前端JS加密对抗由浅入深-1
  • 八股文打卡day17——计算机网络(17)
  • Java-经典算法-logcat获取数据
  • APache 网页优化
  • C语言实现关键字匹配算法(复制即用)
  • 【大数据】安装 Zookeeper 单机版
  • Django 快速整合 Swagger:实用步骤和最佳实践
  • C++ cstdio
  • 昇腾多卡通信教程【配置网络检测对象IP】
  • PKI 公钥基础设施,公钥私钥,信息摘要,数字签名,数字证书
  • 企业Aspera替代方案有哪些推荐
  • vue3 vuedraggable draggable element must have an item slot
  • 如何缓解BOT攻击?分享灵活准确的防御之道
  • 了解JavaScript的执行环境及作用域
  • 嵌套调用和链式访问
  • DBA技术栈(二):MySQL 存储引擎