LeetCode 121. 买卖股票的最佳时机
初始化变量:记录当前最小价格 遍历价格数组:从第二个价格开始遍历。 返回结果:遍历结束后,返回
发布日期:2025-06-19 12:05:27
浏览次数:4
分类:精选文章
本文共 1105 字,大约阅读时间需要 3 分钟。
要解决这个问题,我们需要找到给定股票价格数组中能够获得的最大利润。规则是只能买入一次并卖出一次,且卖出价格必须高于买入价格。
方法思路
我们可以使用一个高效的算法来解决这个问题。这个算法的时间复杂度是O(n),空间复杂度是O(1),非常适合处理大数据量的情况。具体步骤如下:
min_price 和最大利润 max_profit。初始时,min_price 设为第一个价格,max_profit 设为0。- 如果当前价格大于
min_price,计算当前价格与min_price的利润,并与max_profit比较,更新max_profit。 - 如果当前价格小于
min_price,更新min_price。
max_profit。这种方法确保我们只遍历数组一次,时间复杂度为O(n),能够高效地解决问题。
解决代码
#includeusing namespace std;int maxProfit(vector &prices) { if (prices.size() == 0) return 0; int min_price = prices[0]; int max_profit = 0; for (int i = 1; i < prices.size(); ++i) { if (prices[i] > min_price) { int profit = prices[i] - min_price; if (profit > max_profit) { max_profit = profit; } } else { min_price = prices[i]; } } return max_profit;}
代码解释
- 初始化:
min_price设为第一个价格,max_profit设为0。 - 遍历数组:从第二个元素开始,检查当前价格与
min_price的关系。- 如果当前价格高于
min_price,计算利润,并更新max_profit。 - 如果当前价格低于
min_price,更新min_price。
- 如果当前价格高于
- 返回结果:遍历结束后,返回
max_profit。
这种方法确保了在最优的时间和空间复杂度下解决问题,适用于各种股票价格数组。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2026年06月04日 16时57分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pipeline配置与管理Job企业级实战
2023-03-02
pipeline项目配置实战
2023-03-02
Pipenv 与 Conda?
2023-03-02
QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小//Android虚拟机分辨率
2023-03-02
pipy国内镜像的网址
2023-03-02
quiver绘制python语言
2023-03-02
pip下载缓慢
2023-03-02
PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码
2023-03-02
pip在安装模块时提示Read timed out
2023-03-02
pip更换源
2023-03-02
SpringBoot之Banner源码深度分解
2023-03-02
Pix2Pix如何工作?
2023-03-02
QuickBI助你成为分析师——搞定数据源
2023-03-02
pkl来存储python字典
2023-03-02
quick sort | 快速排序 C++ 实现
2023-03-02
pkpmbs 建设工程质量监督系统 文件上传漏洞复现
2023-03-02