剑指 Offer 63. 股票的最大利润

发布时间 2023-09-11 19:48:07作者: 小星code

题目链接: 剑指 Offer 63. 股票的最大利润

题目描述:

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

解法思路:

使用 minv 记录前 i 天的最低价格,第 i 天卖出的利润就是 prices[i] - minv ,遍历一遍数组,不断更新最大利润

代码:

func maxProfit(prices []int) int {
    var res int
    n := len(prices)

    if n == 0 {
        return res
    }
    // minv 表示前 i 天最低的价格
    for i,minv := 0,prices[0];i < n;i++{
        // 如果第i天卖出,更新利润,更新最小值
        res = max(res,prices[i] - minv)
        minv = min(minv,prices[i])
    }
    return res
}
func max(a,b int)int{
    if a > b {
        return a
    }
    return b
}
func min(a,b int)int{
    if a < b {
        return a
    }
    return b
}