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
                
相关推荐
叶小鸡2 小时前
小鸡玩算法-力扣HOT100-贪心算法
算法·leetcode·贪心算法
superior tigre3 小时前
45 跳跃游戏2
算法·leetcode·游戏
田梓燊4 小时前
力扣:138.随机链表的复制
算法·leetcode·链表
_深海凉_5 小时前
LeetCode热题100-26. 删除有序数组中的重复项
python·算法·leetcode
嘻嘻哈哈樱桃5 小时前
牛客经典101题题解集--二叉树
java·数据结构·python·算法·leetcode·职场和发展
6Hzlia5 小时前
【Hot 100 刷题计划】 LeetCode 98. 验证二叉搜索树 | C++ 指针边界法
c++·算法·leetcode
踩坑记录6 小时前
leetcode hot100 300. 最长递增子序列 medium 动态规划
leetcode·动态规划
小辉同志6 小时前
45. 跳跃游戏 II
c++·leetcode·游戏·贪心算法
踩坑记录7 小时前
leetcode hot100 347. 前 K 个高频元素 medium 桶排序
leetcode