想法是取到低峰和高峰相减,我的解法:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:
return 0
benefit = 0
i = 0
lens = len(prices)
while i < lens:
minVal = prices[i]
maxVal = prices[i]
j = i
while j < lens:
if prices[j] <= minVal:
minVal = prices[j]
maxVal = prices[j]
j += 1
else:
break
while j < lens:
if prices[j] >= maxVal:
maxVal = prices[j]
j += 1
else:
break
benefit += maxVal - minVal
i = j
return benefit
大佬的解法:简单粗暴,直接取增长值即可
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if not prices:
return 0
benefit = 0
for i, p in enumerate(prices[1:]):
if p > prices[i]:
benefit += p - prices[i]
return benefit