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