121. 买卖股票的最佳时机 easy 贪心算法


时间复杂度:O(n),只遍历一次数组

空间复杂度:O(1),只用两个变量存储状态

买入点一旦确定,卖出价格越高利润越大

只要历史最低买入点没变,卖出价格增加时利润只会增大或者不变

python 复制代码
class Solution:
    def maxProfit(self, prices: List[int]) -> int:

        # buy:  最低买入点(动态更新)
        # profit: 当日卖出,根据最低买入点,可以赚多少(动态更新)

        # 只遍历一遍
        buy = float('inf')  # 最低买入点初始值,无穷大
        profit = 0    # 初始利润值,0

        for price in prices:   # 假设每一天都卖,当日卖出,根据最低买入点,可以赚多少(动态更新profit)
            
            #  最低买入点(动态更新)
            if price < buy:
                buy = price   

            # 只要最低买入点没更新,就可以算日卖出,根据最低买入点,可以赚多少
            elif price-buy > profit:   # 动态更新profit
                profit = price-buy

        return profit
                
相关推荐
洛水水1 天前
【力扣100题】46.单词拆分
算法·leetcode·职场和发展
alphaTao1 天前
LeetCode 每日一题 2026/5/11-2026/5/17
算法·leetcode
洛水水1 天前
【力扣100题】45.零钱兑换
算法·leetcode·职场和发展
YL200404261 天前
041二叉树的层序遍历
数据结构·leetcode·bfs
洛水水1 天前
【力扣100题】47.最长递增子序列
算法·leetcode·职场和发展
_日拱一卒1 天前
LeetCode:199二叉树的右视图
算法·leetcode·职场和发展
人道领域1 天前
【LeetCode刷题日记】递归与回溯实战 257.二叉树的所有路径——一篇文章彻底搞懂回溯
开发语言·python·算法·leetcode
ulias2121 天前
leetcode热题 - 7
数据结构·算法·leetcode
玛卡巴卡ldf1 天前
【LeetCode 手撕算法】(动态规划)爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换、单词拆分、最长递增子序列、乘积最大子数组、分割等和子集
java·数据结构·算法·leetcode·动态规划·力扣
凌波粒1 天前
LeetCode--二叉树层序遍历实战指南
算法·leetcode·职场和发展