思路一
记录每一个数之前的最小买入价格,计算当前数与最小买入价格的差(即今天卖出的利润),比较每天的利润,取最大。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
low = float("inf")
res = 0
for i in range(len(prices)):
low = min(low, prices[i])
res = max(res, prices[i] - low)
return res
思路二
动态规划:前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格},但会超时
#dp超时
dp = [0] * n
for i in range(1,n):
dp[i] = max(dp[i-1], prices[i] - min(prices[:i]))
return dp[-1]