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 小时前
算法题打卡力扣第1658题:将 x 减到 0 的最小操作数(mid)
学习·leetcode
Cccp.1232 小时前
【leetcode】(六) 图和贪心算法
数据结构·算法·leetcode
y1su2 小时前
【Leetcode】1477. 找两个和为目标值且不重叠的子数组
数据结构·后端·算法·leetcode·职场和发展
mmmmath_313 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z13 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
参.商.15 小时前
【Day 53】76. 最小覆盖子串
leetcode·golang
虚无的纽扣17 小时前
【力扣刷题】第二天:无重复字符的最长字串、移动零问题
算法·leetcode·排序算法
圣保罗的大教堂21 小时前
leetcode 3742. 网格中得分最大的路径 中等
leetcode
我不会起名字3221 天前
一天一道算法题(35):电话号码的字母组合
java·数据结构·后端·python·leetcode·go·回溯
圣保罗的大教堂1 天前
leetcode 2033. 获取单值网格的最小操作数 中等
leetcode