假设我们有一个按时间顺序排列的代表公司股价的价格列表,我们必须找到仅通过买卖该股票一次就能获得的最大利润。我们必须记住,我们必须先购买才可以出售。
因此,如果输入就像价格= [10、12、9、6、8、12],那么输出将是6,因为我们可以在6买入,在12卖出。
为了解决这个问题,我们将遵循以下步骤-
max_profit:= 0
min_stock:=无限
对于价格中的每个价格,
max_profit:= max_profit和(价格-min_stock)的最大值
min_stock:=最小库存和价格
返回max_profit
让我们看下面的实现以更好地理解-
class Solution: def solve(self, prices): max_profit = 0 min_stock = float('inf') for price in prices: max_profit = max(max_profit, price - min_stock) min_stock = min(min_stock, price) return max_profit ob = Solution()print(ob.solve([10, 12, 9, 6, 8, 12]))
[10, 12, 9, 6, 8, 12]
输出结果
6