思路
prices.append(0) 预防[1,2,3,4,5]情况
假设dp代表当天卖出的利润
v代表最大利润
mins代表买入的最小价格
卖出最大利润的情况:当天卖出比前一天卖出利润小,说明前一天就是卖出的最好时期,前一天卖出 : 则今天就是购买的日期 ,买入最小价格必然是今天(新一轮的查找卖出最大利润),则今天买、卖,利润为0
class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""if len(prices)<=1:return 0prices.append(0)dp=[0]*len(prices)dp[0],mins=0,prices[0]v=0for i in range(1, len(prices)):mins = min(mins, prices[i])if prices[i] - mins <dp[i - 1]:v += dp[i - 1]mins = prices[i]dp[i] = prices[i] - minsreturn v