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

LeetCode 121 122:股票买卖问题(DP 对比题解)✅

LeetCode 121 & 122:股票买卖问题(DP 对比题解)✅

📌 题目列表

题号题目限制
121买卖股票的最佳时机I只能交易1 次
122买卖股票的最佳时机II可以交易无限次

📖 内容概要

给定一个数组prices,其中prices[i]是第i天的股票价格。
你需要选择买入和卖出时机,使利润最大。

  • 121:只能买卖一次
  • 122:可以多次买卖(同一天不能同时买卖)

✅ 动态规划
✅ 状态机思想
✅ 面试高频题


💡 统一 DP 定义(两题通用)

dp[i][0]=第 i 天结束时,不持有股票的最大利润 dp[i][1]=第 i 天结束时,持有股票的最大利润

🔁 状态转移(核心)

不持有股票dp[i][0]

dp[i][1]=max(前一天就不持有,前一天持有+今天卖出)

✅ 两题完全一致


持有股票dp[i][1]

题目转移方程含义
121max(dp[i-1][1], -prices[i])只能买一次
122max(dp[i-1][1], dp[i-1][0] - prices[i])可以反复买

这是两道题的唯一区别


✅ 121 题:只能买卖一次(AC 代码)

classSolution{publicintmaxProfit(int[]prices){intlen=prices.length;int[][]dp=newint[len][2];dp[0][0]=0;// 不持股dp[0][1]=-prices[0];// 持股for(inti=1;i<len;i++){dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);dp[i][1]=Math.max(dp[i-1][1],-prices[i]);// 只能买一次}returndp[len-1][0];}}

✅ 关键点

  • 第二次买入时:
    • 之前不能有利润
    • 只能是-prices[i]

✅ 122 题:可以无限交易(AC 代码)

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

✅ 关键点

  • 再次买入时:
    • 使用的是之前不持股的最大利润

🔍 两题核心差异对比

对比项121(一次)122(无限次)
是否可多次买卖
持有状态转移-prices[i]dp[i-1][0] - prices[i]
DP 含义第一次买入任意次买入
难度中等简单

⏱️ 复杂度分析

指标复杂度
时间复杂度O(n)
空间复杂度O(n)(可优化为 O(1))

🚀 空间优化(通用)

inthold=-prices[0];intcash=0;for(inti=1;i<prices.length;i++){intprevCash=cash;cash=Math.max(cash,hold+prices[i]);hold=Math.max(hold,prevCash-prices[i]);}returncash;

✅ 一句话总结

121 限制“只能买一次”,122 允许“反复买卖”,区别仅在于持有股票的转移方程。

http://www.jsqmd.com/news/965881/

相关文章:

  • Roundcube密码插件配置避坑指南:如何与Dovecot CRAM-MD5加密方式完美对接
  • 连续CAT方法在LLM评估中的创新与应用
  • 别再死记硬背了!用Python+NumPy可视化理解冲激函数如何‘抓取’信号采样点
  • 告别繁琐配置:5分钟在ESP32-S3上跑通OV2640摄像头并上传图片到阿里云OSS
  • 新手入门数据分析:用快马平台生成可交互代码,理解spsspro每一步操作原理
  • 手把手教你用MySQL命令行备份与恢复Bugzilla数据(含常见报错解决)
  • Modbus RTU调试避坑指南:如何用Modbus Poll/Simulator快速排查通信故障
  • 2026年政务社区数智助手评测:数智物流保险平台/智能数据治理平台/汽车产业数智情报/主数据治理与管控/企业数据治理方案/选择指南 - 优质品牌商家
  • LLM注入攻击本质与七层防御实战指南
  • 2026年比较好的巧力宝巧克力脆馅/福建巧克力脆馅稳定供货厂家推荐 - 行业平台推荐
  • CSDN AI数字营销素材接入全攻略(私有素材调用白皮书)
  • 2026年6月商标购买网站哪家好,闲置转让商标/商标注册/商标转让查询/热门商标直卖/商标品牌,商标购买公司哪个便宜 - 品牌推荐师
  • 服饰行业数字化转型:服饰企业供应链高效数字化管理方案(PPT)
  • C-Lodop + Vue3/Ant Design实战:封装一个健壮的远程PDF打印组件
  • GNURadio流图实战:当USRP遇上VLC,手把手教你搭建无线视频监控原型系统
  • 告别编译烦恼:用Docker和pip快速搞定Python连接达梦数据库(dmPython)
  • CSDN AI营销业务架构图首次公开:内容营销×信息流广告=1+1<2?3个致命混淆正在拖垮ROI
  • 新手福音:在快马平台上手Touchgal,从零实现触摸交互Demo
  • 手把手教你用VMware ESXi 7.0搭建家庭服务器(附CentOS镜像导入避坑指南)
  • AI编程14-性能优化与AI辅助调优:让AI帮你找出代码瓶颈,响应速度提升10倍
  • 黄厝网红打卡小吃实测:厦门姜母鸭特产、厦门小吃店、厦门旅游伴手礼、厦门旅游特产、厦门特产店、厦门特色小吃店、厦门网红打卡小吃选择指南 - 优质品牌商家
  • 告别乱码!用LabVIEW报表工具包完整读取带中文表头的Excel数据(附VI截图)
  • Scrum价值放大:从流程执行到客户可验证成果的实战指南
  • 医疗AI落地三步法:临床工作流适配、人机协同接口与可解释验证
  • 2026年比较好的啤酒设备主流厂家对比评测 - 品牌宣传支持者
  • 别再只会source ~/.bashrc了!Anaconda3环境变量配置的三种正确姿势与一个常见坑
  • 告别命令盲查:手把手教你用KingbaseES(人大金仓)的ksql命令行高效工作
  • 为什么同行GEO点击成本低42%?:CSDN平台未公开的“地理-语义-时序”三维匹配模型首次逆向推演(含Python特征工程代码)
  • 告别复杂编码!用GNURadio + VLC + USRP三步搞定无线视频‘直播’
  • 告别繁琐配置:5分钟搞定ESP32-S3摄像头连接阿里云OSS,并推送到微信小程序