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

力扣122 买卖股票的最佳时机II java实现

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

给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。然而,你可以在同一天多次买卖该股票,但要确保你持有的股票不超过一股。

返回你能获得的最大利润

示例 1:

输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。 最大总利润为 4 + 3 = 7 。

示例 2:

输入:prices = [1,2,3,4,5]输出:4解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。 最大总利润为 4 。

示例 3:

输入:prices = [7,6,4,3,1]输出:0解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。

提示:

  • 1 <= prices.length <= 3 * 104
  • 0 <= prices[i] <= 104

该题对比买卖股票的最佳时机题,多了一个可以多次买卖股票的条件,现在想使最终的利润最大化,可以用动态规划解决,设置dp[][]数组,dp[][]=dp[prices.length][2]。dp[i][0]表示第i天手里没有股票的最大利益,dp[i][1]表示第i天自上次卖出股票后到现在购买股票的最小值,例如,prices = [7,1,5,3,6,4],dp[0][1] = -7,因为一开始购买股票的最小值是7,dp[0][0]=0,dp[1][1]=-1,因为1小于7,当前购买的股票的最小值是1,dp[1][0]=0,紧接着dp[2][1] = -5当前股票价值上涨,直接卖出,最小的股票价值是5,dp[2][0]= 0+5-1=4,然后继续dp[3][1]=-3,由于今天购买股票的更低,dp[3][0]保持不变dp[3][0]=4,然后dp[4][1] = -6,今天股票价值上涨,直接卖出,再次购买股票的最低价值就是今天,dp[4][0] = dp[3][0] + dp[3][1] + 6 = 4 - 3 + 6 = 7,后续则可得出最大值为7。代码如下

public static void main(String[] args) { // 测试用 int[] prices = {7,1,5,3,6,4}; System.out.println(maxProfit(prices)); } public static int maxProfit(int[] prices) { int[][] dp = new int[prices.length][2]; dp[0][1] = -prices[0]; for (int i = 1; i < prices.length; i++) { if (dp[i - 1][0] < dp[i - 1][1] + prices[i] + dp[i - 1][0]){ dp[i][0] = dp[i - 1][1] + prices[i] + dp[i - 1][0]; dp[i][1] = -prices[i]; }else { dp[i][0] = dp[i - 1][0]; dp[i][1] = Math.max(dp[i - 1][1], -prices[i]); } } return dp[prices.length - 1][0]; }

以上为记录分享用,代码较差请见谅

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

相关文章:

  • STM32项目分享:图书馆环境监测系统
  • 2026年矩阵系统避坑指南:市面主流软件真实横评,到底哪家好?
  • 2026年私域的八大挑战及发展方向
  • 7×24小时技术支持的售后服务系统有哪些?
  • 2026年矩阵系统选型图谱:5款主流软件的“性格画像”与适用场景匹配
  • 能对接电商系统的售后服务系统有哪些?
  • APS概念-需求时间供应时间
  • APS概念-新订单开始日期延迟
  • APS概念-可承诺量 / 承诺能力拉动容差
  • APS概念-ATP和CTP
  • APS概念-供应耗用容差
  • 互联网医院系统|互联网医院成品|互联网医院开发
  • 干货分享|FPGA、CPU与GPU协同计算架构
  • 太空算力、AI上星与卫星智能化
  • 2025年毕业论文救星!8款AI写论文工具实测,一键改重降重+高级表达替换,原创度飙升!
  • 基于深度学习的交通锥形桶检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • 问题记录与反思
  • Qt 属性绑定(Property Binding)机制提供的完整、详细教程与丰富示例,重点覆盖 Qt 6.x 的现代用法
  • 行政管理大专生经济压力大?考这高性价比证书,副业收入超主业
  • 故障复盘:从“组播协议疑云”到“物理协商真相”——记一次视频流中断的排查之旅
  • 深入 Flutter for OpenHarmony 组件属性配置:从代码细节看 UI 表现力构建
  • Postman持久化保存/设置断言详解
  • Postman介绍和安装,发送带参数的GET请求
  • UI自动化测试:Jenkins配置详解
  • 芒格的“概率思维“:在不确定性中做出明智决策
  • 告别信息孤岛,商联达让总部-区域-门店数据实时同频
  • 农资行业B2B多租户商城系统推荐,适配农业经销商层级管理
  • 导师严选10个AI论文网站,MBA高效写作必备!
  • 2026年1月变电设备六氟化硫泄漏检测仪品牌推荐
  • 寒假spark学习1 - 2305