问题
解答
1.暴力解法
计算出每一天的最大利润,再找出最大利润(很复杂,而且会超时)
def maxProfit(prices):
if len(prices)<=1:
return 0
k=0
lst= []
prices_copy=prices.copy()
for i in range(1,len(prices)):
for j in range(i):
if prices[i]-prices[j]>=0:
n=prices[i]-prices[j]
lst.append(n)
prices_copy[i]=max(lst)
else:
prices_copy[i]=-1
k+=1
if prices_copy.count(-1)==len(prices)-1:
return 0
else:
return max(prices_copy[1:])
print(maxProfit([7,1,5,3,6,4]))
2.动态规划
前i天的最大利润 = max{前i-1天的最大利润,第i天的价格-前i-1天中的最小价格}
def maxProfit(prices):
if len(prices)<=1:
return 0
min_price = prices[0]
profit = 0
for i in range(1,len(prices)):
if prices[i] < min_price:
min_price = prices[i]
if prices[i] - min_price > profit:
profit = prices[i] - min_price
return profit
print(maxProfit([7,1,5,3,6,4]))
运行结果
均为