
时间复杂度: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