121. 买卖股票的最佳时机
解法一:暴力
class Solution:
def maxProfit(self, prices: List[int]) -> int:
maxP = 0 #初始为0
for i in range(len(prices)):
for j in range(i+1, len(prices)):
maxP = max(maxP, prices[j] - prices[i]) #求最大利润
return maxP解法二:一次遍历
class Solution:
def maxProfit(self, prices: List[int]) -> int:
min_price, max_profit = sys.maxsize, 0
#一次遍历,从前往后,每次更新最小值,用当前价格减去最小值计算差价,遇到最大价格则更新
for i in range(len(prices)):
min_price = min(min_price, prices[i])
max_profit = max(max_profit, prices[i] - min_price)
return max_profit解法三:状态机dp
最后更新于