1、假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
力扣链接
解题思路:动态规划
状态定义: dp[i]表示前i日的最大利润
转移方程: dp[i]=max(dp[i-1],price[i]-min(price[0:i]))
初始状态: dp[0]=0
返回值: dp[-1]
class Solution(object):
def maxProfit(self, prices):
if not prices: return 0
dp=[0 for _ in range(len(prices))]
dp[0]=0
small=prices[0]#记录i日之前的最小值
for i in range(1,len(prices)):
if prices[i]<small:
small=prices[i]
dp[i]=max(dp[i-1],prices[i]-small)
return dp[-1]