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

LeetCode122. 买卖股票的最佳时机 II:贪心策略实现最大利润

在股票交易类算法题中,力扣122题「买卖股票的最佳时机 II」是经典的贪心算法应用场景。这道题的核心要求是:允许在任意天数买入和卖出股票(可多次交易),求能获得的最大利润。本文将从题目分析、思路推导、代码实现到复杂度分析,完整拆解这道题的最优解法。

一、题目理解

题目描述

给你一个整数数组 `prices` ,其中 `prices[i]` 表示某支股票第 `i` 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润 。

核心规则拆解

题目隐含的最优交易策略可以简化为:

  • 从第2天开始,若当天股价 > 前一天股价,说明存在盈利空间:在前一天买入,当天卖出,赚取差价;

  • 若当天股价 ≤ 前一天股价,无盈利空间,不进行任何操作;

  • 所有上涨交易日都进行买卖,下跌/持平交易日不操作,最终利润即为最大值。

举个直观例子:

假设 `prices = [7,1,5,3,6,4]`,交易过程如下:

  • 第2天(价格1)< 第1天(价格7)→ 不操作;

  • 第3天(价格5)> 第2天(价格1)→ 买入第2天、卖出第3天,利润 `5-1=4`;

  • 第4天(价格3)< 第3天(价格5)→ 不操作;

  • 第5天(价格6)> 第4天(价格3)→ 买入第4天、卖出第5天,利润 `6-3=3`;

  • 第6天(价格4)< 第5天(价格6)→ 不操作;

  • 总利润:`4+3=7`,为该案例的最大利润。

二、解题思路:贪心算法

贪心策略核心

贪心算法的关键是「局部最优推导全局最优」。对于本题,每天的最优决策就是:只要当天股价比前一天高,就赚取这部分差价;否则不操作。把所有单日的正差价累加,最终结果就是全局最大利润。

思路推导

  1. 初始化利润 `profit = 0`;

  2. 遍历股价数组(从第2天开始,即索引1);

  3. 对于每个交易日 `i`,计算 `prices[i] - prices[i-1]`:

    1. 若差值 > 0,说明盈利,将差值加入总利润;

    2. 若差值 ≤ 0,说明无盈利,跳过;

  4. 遍历结束后,总利润即为最大值。

三、代码实现

完整代码实现(Java)

class Solution { public int maxProfit(int[] prices) { int ans = 0; for (int i = 1; i < prices.length; i++){ if(prices[i] > prices[i-1]){ ans += prices[i] - prices[i-1]; } } return ans; } }

四、复杂度分析

时间复杂度

遍历一次股价数组,遍历次数为 `n-1`(`n` 为数组长度),因此时间复杂度为O(n)。

空间复杂度

仅使用了常量级的额外空间,未开辟新的数组或容器,因此空间复杂度为O(1)

总结

  1. LeetCode122题的核心解法是贪心算法,通过“累加所有单日正差价”实现全局最大利润;

  2. 算法时间复杂度O(n)、空间复杂度O(1),是理论最优解;

  3. 贪心策略的关键是“局部最优”:只要当天股价比前一天高,就赚取该部分差价,最终累加结果即为全局最优。

这道题的核心启示是:在允许多次交易的股票问题中,无需纠结“长期持有”,抓住每一次短期盈利的机会,最终就能获得最大收益。这种“见好就收”的贪心思路,也是算法中局部最优推导全局最优的典型应用。

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

相关文章:

  • 跳跃游戏(贪心算法)详解 | 时间O(n)空间O(1)最优解​
  • 班通科技:如何运用Bamtone HCT80执行IPC-2152的耐电流测试?
  • contextvars 原理详解
  • AI安全面临灵魂拷问:“意图篡改”怎么防?绿盟科技给你答案!
  • Power BI 在大数据可视化报表中的应用实践
  • 十年携手 共创共赢 东软荣膺一汽红旗“新高尚·旗帜奖”
  • 江苏大学《Prog. Solid State Ch.》综述:超快焦耳加热技术—电池材料非平衡合成与结构精准调控的新范式
  • 十分钟读懂RAG - 智慧园区
  • [GenAI] Launch Multiple Cursor Composer AI Agents to Work in Parallel
  • 多核异构MPU在多轴实时运动控制中的系统架构与实现解析
  • 从零构建嵌入式轻量级命令行调试工具
  • 【前端开发】Vue项目多客户配置自动化方案【二】
  • WD5030K实测解析:一款撑起宽压大电流场景的国产DC-DC芯片,7-30V宽压输入、12A
  • 【高斯泼溅】还在龟速建模?三步实现训练极速优化
  • 技术前沿!提示工程架构师提升AI提示质量的创新思路
  • 通过采集器监测环境的温湿度如果这个采集器连上网络接入云平台会发生什么呢?
  • 物联网模组柔性FPC天线方案选型与应用指南解析
  • Zookeeper集群部署实战:高可用配置与性能调优
  • 【预编码】基于matlab BDMA下行传输的集群块对角数字预编码【含Matlab源码 15008期】含报告
  • 【通信】基于matlab遗传算法多用户MISO系统速率分拆【含Matlab源码 15012期】
  • 64通道+166μs采样!触觉智能RK3506+OneOS低成本实时ADC采集
  • 触觉智能RV1126B核心板配置USB复合设备(上)
  • 重塑智算存储范式:绿算技术NVMe-oF芯片解决方案全景剖析
  • 零基础搞懂大模型微调:入门必备知识点
  • 书目
  • 【通信】DPCM编码及2DPSK调制数字频带通信系统仿真【含Matlab源码 15019期】
  • Visual Paradigm AI 数据库建模工具全面指南
  • 【光学】水波在多个垂直薄板下的透射系数【含Matlab源码 15013期】
  • P14162 [ICPC 2022 Nanjing R] 完美匹配
  • RM赛事C型板九轴IMU解算(3)(姿态融合算法)