class Solution:
def maxProfit(self, prices: List[int]) -> int:
n = len(prices)
if n == 0: return 0
minPri, maxPro1 = prices[0], 0 # 顺序遍历的最小pirce和最大利润
maxPri, maxPro2 = prices[-1],0 # 逆序遍历的最大price和最大利润
profit1, profit2 = [0] * n, [0] * n # 顺序和逆序的利润分布
for i in range(n):
if prices[i] <= minPri: minPri = prices[i]
else: maxPro1 = max(maxPro1, prices[i]-minPri)
profit1[i] = maxPro1
if prices[n-i-1] >= maxPri: maxPri = prices[n-i-1]
else: maxPro2 = max(maxPro2, maxPri-prices[n-i-1])
profit2[n-i-1] = maxPro2
maxPro = profit1[-1]
for i in range(n-1):
maxPro = max(maxPro, profit1[i]+profit2[i+1])
return maxPro
123另外的解
最新推荐文章于 2021-05-21 17:22:50 发布