【贪心算法】LC 121.买卖股票的最佳时机

文章目录

前言

本专栏文章为《LeetCode 热题 100》的刷题题解,相关内容如有侵权,立即删除。

一、题目

1、原题链接

121.买卖股票的最佳时机

2、题目描述

二、个人思路整理

1、思路分析

核心思路:在遍历数组的同时,不断更新历史最低买入价,并计算当前价格卖出能赚的利润,实时维护最大利润。

核心公式:当天的最大收益=max(之前的最大收益,今天价格-历史最低价)

核心操作时:维护最小买入价格、计算新利润来维护最大利润。

复杂度分析

  • 时间复杂度: O ( n ) O(n) O(n),一个for循环,一次遍历。
  • 空间复杂度: O ( 1 ) O(1) O(1),仅变量空间,常数阶,未开辟其他辅助空间 。

2、解题代码

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minPrice = INT_MAX; // 最低买入价格
        int ans = 0; // 最大利润
        for (auto price : prices) {
            // 尝试更新最低买入价格
            minPrice = min(minPrice, price);
            // 尝试更新最大利润
            ans = max(ans, price - minPrice);
        }
        return ans;
    }
};

三、知识风暴

  • INT_MAX:定义在 <climits> 中,表示 int的最大值(在绝大多数现代 32 位和 64 位系统中,int 占 4 个字节(32 位)。其中最高位为符号位,因此 int 的取值范围是 − 2 31 -2^{31} −231 到 2 31 − 1 2^{31} - 1 231−1),INT_MAX具体数值为:2147483647(约 2.14 × 10 9 2.14 \times 10^9 2.14×109,即 21 亿多)。
  • 防溢出:对 INT_MAX 做加法会溢出变负数,需做加法时改用 long long 或用 0x3f3f3f3f(约 10 亿,图论/DP 常用无穷大)替代。
相关推荐
hanlin031 小时前
动态规划专练:力扣第718、1143题
算法·leetcode·动态规划
ChaoZiLL1 小时前
二叉树经典例题
数据结构·算法
不正经学生1 小时前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
三克的油2 小时前
算法基础-1
数据结构·c++·算法
oort1232 小时前
OortCodex 是奥尔特云 OortCloudSmart 推出的国产化工程化 AI 编码 Agent(奥尔特云编码智能体)
大数据·人工智能·算法
TheBestRucy2 小时前
基于Dify的旅游攻略&王者荣耀攻略智能助手项目
服务器·开发语言·人工智能·python·算法·旅游
你想知道什么?2 小时前
朴素贝叶斯算法-学习笔记
笔记·学习·算法
zlinear数据采集卡2 小时前
ZLinear产品线全景对比:D223 vs DABL7606 vs DABL-G511选型指南
arm开发·嵌入式硬件·算法·fpga开发·开源
数模竞赛Paid answer2 小时前
2026年华东杯数学建模C题收益率预测问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯