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

【Hot 100 刷题计划】 LeetCode 121. 买卖股票的最佳时机 | C++ 贪心/动态规划题解

LeetCode 121. 买卖股票的最佳时机 | C++ 贪心/动态规划一次遍历题解

📌 题目描述

题目级别:简单

给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。
你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。


💡 解题思路:贪心算法 / 动态规划 (一次遍历)

最暴力的解法是使用两层for循环,枚举每一天的买入和卖出情况,但这样时间复杂度会达到O(N2)O(N^2)O(N2),在数据量大的时候必然会超时。

我们需要寻找一种O(N)O(N)O(N)的解法,即只遍历数组一次
想象一下我们正在看股票走势图,想要获得最大利润,我们其实只需要做两件事:

  1. 寻找历史最低点:在遍历每一天价格的时候,我们要记住今天及今天以前,股票出现的最低价格
  2. 计算如果今天卖出的利润:假设我们就是在这个历史最低点买入的,那么如果今天卖出,利润是多少?我们用这个利润去不断刷新我们的“最大利润记录”。

通过这种方式,我们边走边记录“历史最低买入价”,同时边走边结算“当前最大利润”,只需要一次遍历就能得到最优解。


💻 C++ 代码实现

classSolution{public:intmaxProfit(vector<int>&prices){// 记录历史最低价格,初始值为第一天的价格intmi=prices[0];// 记录全局最大利润,初始为 0(因为就算亏本我们也可以选择不买卖)intres=0;// 遍历这支股票每一天的价格for(inti=0;i<prices.size();i++){// 1. 更新历史最低价格mi=min(mi,prices[i]);// 2. 计算如果今天卖出能赚多少钱,并刷新全局最大利润res=max(res,prices[i]-mi);}returnres;}};
http://www.jsqmd.com/news/576306/

相关文章:

  • 2026年郑州粉末喷涂工厂挑选指南:5步教你选对优质厂家 - 精选优质企业推荐榜
  • 阅读APP书源完全指南:打造你的个性化小说阅读生态
  • 千问3.5-2B开源可部署:模型权重托管远端,升级只需替换配置不重拉镜像
  • 安防相机WDR功能实测:逆光场景下如何拍清车牌和人脸?
  • 运算放大器相位补偿:从原理到实战的稳定性设计
  • 探索固定翼无人机编队控制:从高效协同到PX4-Autopilot落地实践
  • Qwen3.5-9B效果展示:中文新闻事件抽取+时间线生成+关联人物图谱
  • 华硕笔记本终极控制指南:3步用GHelper告别臃肿Armoury Crate
  • 2-SAT 好题分享
  • (全网最硬核)实测8大降AI工具,毕业论文AIGC率断崖降至5%以内!
  • 【Java原生互操作性能天花板突破】:实测对比JNI/FFM/JNR在高并发场景下吞吐量差异达4.7倍,附压测报告与选型决策矩阵
  • 【PlatformIO实战】ESP8266锂电池电量监测:从分压电路到OLED显示的完整方案
  • Flameshot设计系统解析:从原型迭代到交互规范的最佳实践
  • 当UNet遇上形态学:手把手解析MMUNet如何用腐蚀膨胀模块提升结肠癌分割边缘精度
  • 3分钟上手!零代码实现专业视频处理的ffmpegGUI全攻略
  • 大润发购物卡变现技巧:快速变现方法有哪些? - 团团收购物卡回收
  • 进阶篇01-频域滤波实战:Halcon中的功率谱分析与应用
  • ASMR音频下载完整指南:使用asmr-downloader轻松获取asmr.one海量资源
  • @giszhc/socket-client:前端web-socket通讯神器,这才是更优解(附在线示例)
  • 告别Keil调试:用Trace32模拟器离线分析LiteOS的elf与dump文件(STM32L475实战)
  • 数模混合芯片中Calibre PEX提取Hspice Netlist的关键步骤与常见问题解析
  • 终极指南:3分钟快速部署开源AI文本检测工具GPTZero
  • 开源Cursor Free VIP工具:突破AI编程助手限制的终极方案
  • gdb调试集锦
  • OpenClaw人人养虾:Deepgram 语音转写
  • 别再只盯着CT了!5分钟搞懂MRI水成像和化学位移成像,医生是怎么看清你身体里那些“水”的
  • OpenClaw监控技能:用SecGPT-14B实现24/7网络异常检测
  • Win11Debloat完整指南:如何一键清理Windows系统,提升51%性能的免费神器
  • 电源硬件设计实战:基于TPS63070的高效Buck-Boost变换器应用解析
  • 【C语言】指定初始化器的实战技巧与常见误区