关于这道题目的解法我觉得一张图就可以很好解释:
途中C < A +B,所以我们只要找到这样连续的波峰波谷,并把它们的差值加入结果就行了。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices) == 0 or len(prices) == 1: return 0
i = 0
res = 0
while(i < len(prices)):
while(i + 1 < len(prices) and prices[i+1] < prices[i]):
i += 1
j = i + 1
if j < len(prices):
while(j + 1 < len(prices) and prices[j+1] > prices[j]):
j += 1
res += prices[j] - prices[i]
i = j + 1
return res