美文网首页
121. Best Time to Buy and Sell S

121. Best Time to Buy and Sell S

作者: sarto | 来源:发表于2022-07-26 09:02 被阅读0次

    题目

    给定一个数组 prices 其中 prices[i] 代表给定股票在第 i 天的价格。
    你希望通过一次买卖来最大化你的利润。
    返回你可以获得的最大利润,如果不能获取利润,则返回 0.

    解析

    这个题目抽象为,在一个数组中找到两个数字,其中后一个比前一个大,并且这两个数字的差值最小。
    当我们遍历这个数组是,首先考虑何时买入?一旦我们遇到一个历史最低点,则设置该点buy为将来的买入点,因为无论将来值如何,在该点买入才能最大收益。
    然后考虑何时卖出,遍历时,一旦当前值比记录的buy值大,则计算可能获得的利润,将该利润与profit对比,取最大值。

    组后,代码逻辑应该为先判定卖出,再更新买入。

    伪代码

    profit = 0
    buy = prices[0]
    for i:=1;i<len(prices); i++
      if prices[i] < buy
        buy = prices[i]
      if profit < prices[i] - buy
         profit = prices[i] - buy
    return profit
    

    代码

    func maxProfit(prices []int) int {
        profit := 0
        buy := prices[0]
        for i:=1; i<len(prices); i++ {
            if profit < prices[i] - buy {
                profit = prices[i] - buy
            }
            if prices[i] < buy {
                buy = prices[i]
            }
        }
        return profit
    }
    
    image.png

    相关文章

      网友评论

          本文标题:121. Best Time to Buy and Sell S

          本文链接:https://www.haomeiwen.com/subject/vcoairtx.html