尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

重练算法(代码随想录版) day42 - 动态规划part9

重练算法(代码随想录版) day42 - 动态规划part9
📅 发布时间:2026/6/19 13:46:17

今日刷题量:3
当前刷题总量:156
Easy: 60
Mid: 87
Hard: 9

Day42
解题思想

188、309、714都是在 122(无限次交易)的基础上,加“额外约束”,本质都在维护「今天结束时的状态」

  • 最基础的两种状态是:
    • hold:今天结束时 手里持股
    • cash:今天结束时 手里不持股
  • 区别只在于:
    • 能不能再买
    • 能不能再卖
    • 买 / 卖时有没有额外成本
    • 交易次数有没有上限

股票 DP 进化图谱
1) 121:最多 1 次交易

  • 两状态(不持股/持股),但“买”只能用初始资金:
    • cash = max(cash, hold + p)
    • hold = max(hold, -p)
  • 记忆点:hold 只能变成 -p(只买一次)

2) 122:无限次交易(基础母版)

  • 两状态(cash/hold),可以买很多次:
    • cash = max(cash, hold + p)
    • hold = max(hold, cash_old - p)
  • 记忆点:hold 用的是 cash_old - p(卖了还能再买)

3) 123:最多 2 次交易(次数限制的具体版)

  • 把交易次数展开成 4 个状态:
    • buy1, sell1, buy2, sell2
  • 更新:
    • buy1 = max(buy1, -p)
    • sell1 = max(sell1, buy1 + p)
    • buy2 = max(buy2, sell1 - p)
    • sell2 = max(sell2, buy2 + p)
  • 记忆点:每加一笔交易,就多一对 buy/sell

4) 188:最多 k 次交易(通用版)

  • 123 的通用化:用数组存 k 笔交易的状态
    • buy[i]:第 i+1 次买入后
    • sell[i]:第 i+1 次卖出后
  • 核心更新(价格 p):
    • buy[0] = max(buy[0], -p)
    • sell[0] = max(sell[0], buy[0] + p)
    • buy[i] = max(buy[i], sell[i-1] - p)
    • sell[i] = max(sell[i], buy[i] + p)
  • 并且:k >= n/2 退化为 122(无限次)。
  • 记忆点:188 = “123 的数组版” + “大 k 退化 122”

5) 309:无限次交易 + 冷冻期 1 天

  • 从 122 出发:把 cash 拆成两种(因为卖出后第二天不能买):
    • hold:持股
    • sold:今天刚卖(明天冷冻)
    • rest:不持股且可买
  • 转移:
    • hold = max(hold, rest - p)
    • sold = hold_old + p
    • rest = max(rest, sold_old)
  • 记忆点:冷冻期 = “需要区分刚卖出 vs 休息”

6) 714:无限次交易 + 手续费 fee

  • 从 122 出发:卖出时扣 fee(或买入时扣,等价)
    • cash = max(cash, hold + p - fee)
    • hold = max(hold, cash_old - p)
  • 记忆点:手续费 = “卖出收益少 fee”

练习题目
188.买卖股票的最佳时机IV(hard):https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/
309.最佳买卖股票时机含冷冻期(mid):https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/
714.买卖股票的最佳时机含手续费(mid):https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/description/

相关新闻

  • A860-2000-T351编码器
  • 带你搞懂BootLoader(四)-第三个BootLoader
  • vLLM推理引擎教程6-Nsight Systems性能分析

最新新闻

  • 【实战指南】Modbus Poll 9 从零到精通的安装与激活全流程
  • DolphinDB数据库同步:MySQL/PostgreSQL到DolphinDB
  • MC68HC08中断机制与指令集实战解析:从原理到高效编程
  • 从枯叶图到彩色落币图:Imatest如何量化图像纹理与锐度的真实损失
  • 深度学习模型训练与超参数调优:从“炼丹“到系统化方法论
  • 软件定义雷达(SDR)与软件化雷达(SR):从概念辨析到4D成像雷达的实战演进

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号