奥丁项目选股员。努力开始用Ruby解决问题

奥丁项目选股员。努力开始用Ruby解决问题,ruby,algorithm,Ruby,Algorithm,我目前正在处理Odin的选股问题,我甚至很难开始解决这个问题。我花了很长一段时间试图将我的想法实现到代码中,但没有效果……因此我寻找了另一种解决方案,以寻求灵感,看看它是否能帮助我尝试并解决这个问题。best_sell=j+(i+1)在做什么?我不知道如何选择购买日期之后的最高销售日期? i和j表示数组中的索引。这是否有助于理解函数完成时返回的内容?(它是否返回值或索引?) 提示:在构建更高效的解决方案时,它如何帮助您跟踪到目前为止在数组中看到的最低购买价格?我知道I和j代表索引。但我不明白为

我目前正在处理Odin的选股问题,我甚至很难开始解决这个问题。我花了很长一段时间试图将我的想法实现到代码中,但没有效果……因此我寻找了另一种解决方案,以寻求灵感,看看它是否能帮助我尝试并解决这个问题。best_sell=j+(i+1)在做什么?我不知道如何选择购买日期之后的最高销售日期?


i
j
表示数组中的索引。这是否有助于理解函数完成时返回的内容?(它是否返回值或索引?)


提示:在构建更高效的解决方案时,它如何帮助您跟踪到目前为止在数组中看到的最低购买价格?

我知道I和j代表索引。但我不明白为什么j+(I+1)会找到最高卖出日期?为什么不仅仅是j?i+1提供了什么?@nickyheise在使用
j
s循环期间,添加一条记录
j
到控制台的行。你看到了什么?
def stock_picker(arr)
    best_buy = 0
    best_sell = 0
    max_profit = 0
    arr[0..-2].each_with_index do |buy, i|
        arr[(i+1)..-1].each_with_index do |sell, j|
            if (sell - buy) > max_profit
                best_sell = j + (i + 1)
                best_buy = i
                max_profit = sell - buy
            end
        end
    end
    [best_buy, best_sell]
end

puts stock_picker([17,3,6,9,15,8,6,1,10]).inspect