面试经典(7/150)买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。
设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
解题思路:
动态规划:
初始值i=0,表示第0天;
更新前i天的最低价格,即最低买入成本 cost;
更新前i 天的最高利润 profit ,即选择前 i−1天最高利润 profit 和第 i天卖出的最高利润 price - cost 中的最大值 ;
class Solution:
def maxProfit(self, prices: List[int]) -> int:
cost = float('+inf')#最低买入成本,初始化为正无穷
profit = 0#利润,初始化为0
for price in prices:#遍历数组
cost = min(cost, price)#记录最低成本
profit = max(profit, price-cost)#求最大利润
return profit