假设我们有一个按时间顺序表示公司股票价格的价格列表,我们必须找到通过多次买卖该股票可以赚取的最大利润。我们必须记住,我们必须先购买才可以出售。
因此,如果输入就像价格= [10、50、30、40、60],那么输出将是70,因为我们可以在10买,在50卖,在30买,然后在60卖。
为了解决这个问题,我们将遵循以下步骤-
prev_price:=无限
利润:= 0
对于价格中的每个p,
利润:=利润+ p-prev_price
如果p> prev_price,则
prev_price:= p
回报利润
让我们看下面的实现以更好地理解-
class Solution: def solve(self, prices): prev_price = float("inf") profit = 0 for p in prices: if p > prev_price: profit += p - prev_price prev_price = p return profit ob = Solution()print(ob.solve([10, 50, 30, 40, 60]))
[10, 50, 30, 40, 60]
输出结果
70