📌  相关文章
📜  买卖股票后的最大利润(1)

📅  最后修改于: 2023-12-03 15:06:18.664000             🧑  作者: Mango

买卖股票后的最大利润

题目描述:

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意:你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。

示例 2:

输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

代码示例:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices:
            return 0
        
        n = len(prices)
        min_price, max_profit = prices[0], 0
        
        for i in range(1, n):
            if prices[i] < min_price:
                min_price = prices[i]
            else:
                max_profit = max(max_profit, prices[i] - min_price)
        
        return max_profit

代码说明:

这是一道简单的动态规划题目。我们可以用两个变量来记录当前最小的股票价格和当前的最大利润。遍历数组,如果当前价格比最小价格小,则更新最小价格;否则,计算当前价格和最小价格的差值,如果大于当前的最大利润,则更新最大利润。

时间复杂度:O(n)

空间复杂度:O(1)

题目链接:

LeetCode 121. 买卖股票的最佳时机