题目链接
题目描述
实现代码
思路:将数组的下标看成x,每个值看成y,那么在直角坐标系中这就是一个折线,要想找到赚取的最大利润,其实就是每个上升阶段的总和,实现代码如下:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
n = len(prices)
if n == 1:
return 0
cur_buy = prices[0]
cur_sale = -1
ans = 0
first = True
allCalculate = True
for price in prices:
if first:
first = False
continue
if price < cur_buy:
if cur_sale == -1:
cur_buy = price
continue
ans += cur_sale - cur_buy
cur_buy = price
cur_sale = -1
allCalculate = True
continue
if price > cur_sale:
cur_sale = price
allCalculate = False
continue
if price < cur_sale:
ans += cur_sale - cur_buy
allCalculate = True
cur_buy = price
cur_sale = -1
return ans if allCalculate else ans + cur_sale - cur_buy