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

股票买卖最佳时机:LeetCode121题解

题目LeetCode121

给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。

你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。

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

示例

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票

Python解法

代码示例(一次遍历)

class Solution: def maxProfit(self, prices: List[int]) -> int: min_pri = float('inf') max_pro = 0 for price in prices: max_pro = max(price - min_pri, max_pro) min_pri = min(price, min_pri) return max_pro

过程演示

Java解法

代码示例(一次遍历)

class Solution{ public int maxProfit(int[] prices){ int min_pri = Integer.MAX_VALUE; int max_pro = 0; for(int price : prices){ max_pro = Math.max(price - min_pri, max_pro); min_pri = Math.min(min_pri, price); } return max_pro; } }

C++ 解法

代码示例(一次遍历)

class Solution{ public: int maxProfit(vector<int>& prices){ int minPrice = INT_MAX; int maxProfit = 0; for (int price : prices) { maxProfit = max(maxProfit, price - minPrice); minPrice = min(minPrice, price); } return maxProfit; } };

三种语言设置最小值比较

Python

在 Python 中,要表示 “无穷大” 的初始最小值,直接用float("inf")就可以。它是 Python 内置的浮点型无穷大常量,能保证数组里任何价格都比它小,这样第一个价格就能顺利更新为当前的最小值。这种写法很直观,也不需要额外引入头文件或类。

Java

在 Java 里,没有直接的 “无穷大” 关键字,所以用Integer.MAX_VALUE来代替。它是java.lang.Integer类里的一个常量,代表int类型能表示的最大值,数值上等于2147483647。把初始最低价设为它,就能保证任何合法的股价(正整数)都比它小,后续遍历到的第一个价格会自动更新为新的最小值。

C++

C++ 中用INT_MAX表示int类型的最大值,它定义在<climits>头文件里(部分编译器也会通过其他头文件间接包含)。和 Java 类似,它是一个预定义的宏常量,代表int类型的最大取值,把它作为初始最小值,就能确保第一个价格一定能被更新为当前的最低价。

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

相关文章:

  • 339商业模式介绍(代码)
  • 2026年老面小笼包用面粉哪家品质更稳:批次稳定性、品控标准与耐发酵表现深度解析 - 科技焦点
  • 程序员的自我修养:链接、装载与库(库)
  • VideoDownloadHelper 插件深度解析:Chrome 视频下载架构设计与技术实现
  • 告别抓瞎调试!手把手教你用格西调试精灵搞定IEC60870-5-102协议测试
  • AI圈神秘领袖Ilya一幅画引爆全网,OpenAI三件大事暗示AGI时代将至?
  • TP、FP、FN、TN 详解
  • 一文吃透Linux防火墙:firewalld+SELinux完整防护实操指南
  • 科华UPS电源全品类汇总:选型与场景适配指南
  • HDI与普通PCB的叠层差异
  • 黑客必刷的 23 个网安攻防靶场,零基础到红队全覆盖
  • 【最新】最完美的WPF窗体无边框设计!
  • ETS2LA:为欧洲卡车模拟2打造的智能驾驶辅助系统
  • AI学习 - 大模型基础入门
  • 广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境
  • 如何让PS手柄在Windows上完美运行:DS4Windows终极配置指南
  • Rocky Linux 8.9 虚拟机安装全记录:从ISO下载、SHA256校验到首次登录的完整实操
  • AI时代两大高决策行业的社交营销进化 | 第十届社交媒体风向大会数码家电与汽车分论坛 - 资讯快报
  • 从“DOC/PDF”到“WPS”:细看GJB438C-2021文档格式要求背后的国产化信号与落地指南
  • IEC 61000-4-5
  • 中微单片机SC8F072/SC8P062代码生成工具
  • 【深度解析】Hermes Agent + 多模型 API:构建可持续运行的自主 AI 工作流
  • 自动化程序验证中的智能体证明能力
  • [Dify实战] 团队多人共建 Dify 应用时,哪些资源必须先约定命名、隔离和交接规则?
  • 【AI应用开发工程师】第一章:AI 基础与神经网络入门
  • Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取
  • 别再踩坑了!Vue2项目集成wangEditor富文本编辑器的完整配置流程(含图片/视频上传)
  • 学习c语言第22天 循环语句do while
  • 夏 | 日 | 躁 |动
  • [特殊字符] Qwen3.6-35B 8G VRAM 极限部署蓝图:资源受限环境下的多模态大模型运行指南