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