【发布时间】:2021-10-06 19:12:47
【问题描述】:
我正在尝试了解我为以下 leetCode 问题找到的解决方案。
说明: “给定一组价格,其中价格 [i] 是给定股票在第 i 天的价格。 您希望通过选择一天购买一只股票并选择未来的另一天出售该股票来最大化您的利润。 返回您可以从此交易中获得的最大利润。如果无法获得任何利润,则返回 0。”
说明: “输入:价格 = [7,1,5,3,6,4] 输出:5 解释:第 2 天买入(价格 = 1),第 5 天卖出(价格 = 6),利润 = 6-1 = 5。 请注意,不允许在第 2 天买入在第 1 天卖出,因为您必须先买入再卖出。”
我遇到了这个我试图理解的解决方案。在“->”处分解它:
def max_profit([7,1,5,3,6,4])
value = 0
profit = 0
(1...prices.size).each do |i|
value += (prices[i] - prices[i-1])
-> 所以这里 value = 0 + (1-7 = -6)= -6 /value = -6 + (5-1=4)= -2 / value = -2+(3-5)= -4 以此类推以 -3 结尾
value = [0, value].max
-> 这是我不明白的。现在 value = [0, value].max ,当我打印它时,我得到 0,4,2,5,3。
我看到这个的方式是: (在第一次迭代中)value = [0, -6].max,所以 value 为 0,因为 0 > 比 -6
但是当 value = [0, -2].max 时,我在第二次迭代中得到 4 ...不应该再次为 0 吗?怎么得到 0,4,2,5,3 ???
当我执行 value = [0, value].max 时实际发生了什么。 ?
profit = value if value > profit
end
profit
end
一百万谢谢
【问题讨论】:
标签: ruby