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

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了,抽空学习下。

看一道简单题。

在这里插入图片描述

class Solution:def maxProfit(self, prices: List[int]) -> int:cost = -1profit = 0for i in prices:if cost == -1:cost = icontinueprofit_ = i - costif profit_ > profit:profit = profit_if cost  > i:cost = ireturn profit

📌 解题思路:贪心算法

🔹 什么是贪心算法?

贪心算法(Greedy Algorithm 的核心思想是:

在每一步都做出当前最优的选择(局部最优),最终得到全局最优解。

在这道题中,我们的目标是在最低点买入,并在未来的某一天卖出,以获得最大利润。

局部最优解:在遍历数组 prices 时,始终记录当前的最低买入价格 cost,并尝试计算最大利润 profit。

全局最优解:整个遍历过程中,确保 profit 始终是所有可能利润中的最大值。

🔹 变量说明

cost:存储最低买入价格,初始为 prices[0](第一天的价格)。

profit:存储最大利润,初始为 0(默认没有利润)。

🔹 遍历 prices 数组的过程

更新最低买入价格 cost

cost = min(cost, i)

遍历过程中,如果发现更低的股票价格 i,就更新 cost,保证买入价始终是历史最低价。

计算并更新最大利润 profit

profit = max(profit, i - cost)

计算当前价格 i 和 cost 之间的利润。

如果利润 i - cost 比之前记录的 profit 更大,就更新 profit。

📌 复杂度分析

时间复杂度:O(n),其中 n 是 prices 的长度。

只遍历一次数组,每次操作 O(1)。

空间复杂度:O(1)。

只使用了 cost 和 profit 两个变量,没有额外的数据结构。

📌 结论:贪心算法的适用性

为什么这道题可以用贪心算法?

题目保证只能买卖一次,所以我们只需关注最低买入价格和最大利润,不需要回溯。

每一步都在做局部最优决策(维护最小买入价,计算最大利润),最终得到了全局最优解。

由于股票价格不能回退,过去的最优选择不会影响未来的决策,所以贪心算法是合适的。

⚠️ 什么时候不能用贪心?

如果题目允许多次买卖(比如 122. 买卖股票的最佳时机 II),贪心算法可能不是最佳选择,因为需要考虑交易次数和冷却期等限制,此时可能需要动态规划(DP)。

📌 总结

✅ 这道题可以使用贪心算法,因为每一步的局部最优(最低买入价 & 最大利润)最终导向了全局最优解。
✅ 时间复杂度 O(n),空间复杂度 O(1),是非常高效的解法。
✅ 代码逻辑清晰,适用于类似的一次交易股票买卖问题。

http://www.lryc.cn/news/531934.html

相关文章:

  • MySQL表的CURD
  • Java 如何覆盖第三方 jar 包中的类
  • VSCode中使用EmmyLua插件对Unity的tolua断点调试
  • 【数据结构】_链表经典算法OJ(力扣/牛客第二弹)
  • Spring Boot 2 快速教程:WebFlux优缺点及性能分析(四)
  • 自定义多功能输入对话框:基于 Qt 打造灵活交互界面
  • 基于springboot河南省旅游管理系统
  • LabVIEW图像采集与应变场测量系统
  • CommonAPI学习笔记-2
  • ISP代理与住宅代理的区别
  • [25] cuda 应用之 nppi 实现图像色彩调整
  • Java 大视界 -- Java 大数据在智慧文旅中的应用与体验优化(74)
  • PyTorch快速入门
  • 100.7 AI量化面试题:如何利用新闻文本数据构建交易信号?
  • CF 465B.Inbox (100500)(Java实现)
  • 微信小程序获取openid和其他接口同时并发请求如何保证先获取到openid
  • 实现动态卡通笑脸的着色器实现
  • DeepSeek R1 模型解读与微调
  • YOLOv11实时目标检测 | 摄像头视频图片文件检测
  • Node.js学习指南
  • 2.5学习总结
  • java进阶文章链接
  • vue2+vue3 HMCXY基础入门
  • 一次线程数超限导致的hive写入hbase作业失败分析
  • ip属地是手机号还是手机位置?一文理清
  • 查看设备uuid
  • C_C++输入输出(下)
  • All in one 的 AI tool Chain “Halomate”
  • crewai框架第三方API使用官方RAG工具(pdf,csv,json)
  • 脉冲信号傅里叶变换与频域分析:从计算到理解