题目:输入【7,1,5,3,6,4】 输出最大利润6-1=5
方法:动态规划
题解:max_profit=[0,0,0,0,0,0] 存放当前最大利润,min_price=price[0]为最小价格,初始化为第一天的价格,
max_profit[i] 为前i天的最大利润。
当前的最大利润 = max【之前的最大利润,当前的最大利润】max_profit [i]= max[max_profit[i-1],prices[i]-min_price]
当前的最大利润 = 当前卖出价格 - 最小买入价格
最小买入价格 = min【最小买入价格,当前买入价格】 min_price = min[min_price,pric
class Solution:
def maxProfit(self, prices: List[int]) -> int:
n = len(prices)
if n == 0: return 0 # 边界条件
max_profit = [0] * n
min_price = prices[0]
for i in range(1, n):
min_price = min(min_price, prices[i])
max_profit = max(max_profit[i - 1], prices[i] - min_price)
return max_profit[-1]
i=1 min_profit=min[7,1]=1 max_profit[1] = max[0,1-1]=0 max_profit=[0,0,0,0,0,0]
i=2 min_profit=min[1,5]=1 max_profit[1] = max[0,5-1]=4 max_profit=[0,0,4,0,0,0]
i=3 min_profit=min[1,3]=1 max_profit[1] = max[4,3-1]=4 max_profit=[0,0,4,4,0,0]
i=4 min_profit=min[1,6]=1 max_profit[1] = max[4,6-1]=5 max_profit=[0,0,4,4,5,0]
i=5 min_profit=min[1,4]=1 max_profit[1] = max[5,4-1]=5 max_profit=[0,0,4,4,5,5]