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

LeetCode 188 123:股票买卖问题(限制交易次数)—— 联合题解

LeetCode 188 & 123:股票买卖问题(限制交易次数)—— 联合题解 ✅

📌 题目列表

题号题目交易限制
123买卖股票的最佳时机 III最多2 次
188买卖股票的最佳时机 IV最多k 次

📖 内容概要

给定一个数组prices,其中prices[i]表示第i天的股价。
你最多可以完成k 笔交易(一次买入 + 一次卖出算一笔交易)。
求能获得的最大利润。

✅ 动态规划
✅ 状态机模型
✅ 面试 Hard 题


💡 核心思想(非常重要)

一、状态设计(统一)

dp[i][j]

含义:

  • i:第i
  • j:当前处于第几次交易的哪个阶段
j 的奇偶性含义
奇数持有股票(买入后)
偶数不持有股票(卖出后)

二、状态数量

  • 最多k次交易
  • 2 × k + 1个状态

🔁 状态转移(核心)

1️⃣ 持有股票(奇数状态)

dp[i][j]=max(dp[i-1][j],// 继续持有dp[i-1][j-1]-prices[i]// 在第 i 天买入)

2️⃣ 不持有股票(偶数状态)

dp[i][j]=max(dp[i-1][j],// 继续不持有dp[i-1][j-1]+prices[i]// 在第 i 天卖出)

✅ 123 题:最多 2 次交易(k = 2)

状态含义

状态含义
0第 1 次买入
1第 1 次卖出
2第 2 次买入
3第 2 次卖出

AC 代码(Java)

classSolution{publicintmaxProfit(int[]prices){intlen=prices.length;int[][]dp=newint[len][4];dp[0][0]=-prices[0];dp[0][1]=0;dp[0][2]=-prices[0];dp[0][3]=0;for(inti=1;i<len;i++){dp[i][0]=Math.max(dp[i-1][0],-prices[i]);dp[i][1]=Math.max(dp[i-1][1],dp[i-1][0]+prices[i]);dp[i][2]=Math.max(dp[i-1][2],dp[i-1][1]-prices[i]);dp[i][3]=Math.max(dp[i-1][3],dp[i-1][2]+prices[i]);}returndp[len-1][3];}}

✅ 188 题:最多 k 次交易(通用解)

初始化(非常关键)

for(inti=1;i<2*k;i+=2){dp[0][i]=-prices[0];}

含义:

  • 所有“买入状态”初始化为-prices[0]
  • 所有“卖出状态”初始化为0

AC 代码(Java)

classSolution{publicintmaxProfit(intk,int[]prices){intlen=prices.length;int[][]dp=newint[len][2*k+1];// 初始化买入状态for(inti=1;i<2*k;i+=2){dp[0][i]=-prices[0];}for(inti=1;i<len;i++){for(intj=0;j<2*k;j+=2){dp[i][j+1]=Math.max(dp[i-1][j+1],dp[i-1][j]-prices[i]);dp[i][j+2]=Math.max(dp[i-1][j+2],dp[i-1][j+1]+prices[i]);}}returndp[len-1][2*k];}}

🔍 两题对比总结

对比项123(2 次)188(k 次)
状态数量固定 4 个2k + 1 个
初始化手写循环
遍历顺序明确枚举双层循环
本质特殊化泛化

⏱️ 复杂度分析

指标复杂度
时间复杂度O(n × k)
空间复杂度O(n × k)

✅ 一句话总结

股票交易次数受限 = 用奇偶状态表示“买入 / 卖出”,k 次交易就是 2k 个状态的状态机 DP。


📌 面试加分点(建议记住)

  • ✅ 为什么用奇偶状态?
  • ✅ 为什么买入状态初始化为负?
  • ✅ 为什么是dp[i-1][j-1] - price
  • ✅ 和无限次交易的本质区别
http://www.jsqmd.com/news/971271/

相关文章:

  • 2026年6月评价高的江苏工业用制氮机十大厂家哪家靠谱推荐榜,变压吸附/食品级/高纯制氮机生产厂家选择指南 - 海棠依旧大
  • 好用还专业!盘点2026年全网顶尖的AI论文软件
  • 为什么选择Bazzite:为游戏玩家打造的一站式Linux操作系统
  • 2026年浙江轴承生产厂家排行及选型参考指南:嘉兴氮化硅陶瓷轴承/嘉兴轴承厂家/嘉兴轴承生产厂家/嘉兴轴承销售厂家/选择指南 - 优质品牌商家
  • W_Mesh_28x:Blender参数化建模的9种几何体解决方案
  • 分布式事务反直觉坑位与避坑实战指南
  • 探讨2026年品牌影响力背书排名,资质齐全的品牌背书公司哪家性价比高 - myqiye
  • 为什么你的转化归因总对不上?CSDN AI数字营销数据延迟的3个隐藏窗口期,第2个连客户经理都答不准!
  • 2026年新乡老酒回收机构排行及选购参考指南:新乡茅台酒回收电话/新乡附近上门回收名酒/新乡五粮液回收/新乡新乡名酒回收电话/选择指南 - 优质品牌商家
  • 2026-06-05 闲话
  • LeetCode 300 674:最长递增子序列 vs 最长连续递增子序列
  • 2026 年 6 月国内舆情监测工具深度测评:场景适配度 + 性价比双维度精选优质服务商 - 玖叁鹿
  • DisplayPort转VGA方案解析:ANX9832芯片设计与工程实践
  • 小米智能家居接入HomeAssistant的终极解决方案:Xiaomi Miot插件深度解析
  • api:StringBuilder 字符串构造
  • AI 辅助生产排障:从日志到根因的自动诊断
  • KMS智能激活工具:5分钟永久激活Windows和Office的终极指南
  • Python Scrapy 爬虫实战进阶系列(一):轻量化数据存储 - 数据精准写入 SQLite 数据库
  • 2026年资质齐全的建筑工程管理公司推荐 - myqiye
  • CSDN AI数字营销失效应急手册:过期后7天内恢复卡片曝光的唯一合规路径(含工单模板)
  • 字画品相怎么分级?霉斑折痕修补到底影响多大 - 深鉴新闻
  • Spring AI 1.x 系列【40】MCP 客户端 Spring Boot 启动器
  • 【分享】C4droid 安卓C++编译器 手机编程超便捷
  • 高端制造行业先进封装测试技术岗测试开发工程师成长为CTO要经历哪些职位?
  • 从前做NLP要8天,现在写几个Prompt20分钟搞定
  • Python Scrapy 爬虫实战:整站科普栏目分层遍历采集全攻略
  • 万亿级数据迁移实战与生产事故复盘
  • 2026年沈阳路灯行业专业评估报告:技术驱动与场景适配下的优选解析 - 品牌发掘
  • 西门子S7-1500通过Profinet直连图尔克TBEN-S2 RFID读写头(含128字节通信工程与说明)
  • 北京高端软装机构排行:北京装修设计事务所、北京装修设计工作室、北京装修设计师、北京软装设计师、北京高档装修、北京高端别墅设计师 选择指南 - 优质品牌商家