有没有办法只返回数组的最小值/最大值,其中min位于比最大值更低的索引位置?
例如,让我们说:
array = [10, 12, 5, 3, 20, 1, 9]
如果我们在这个阵列上做了.minmax,我们会得到以下结果:
array.minmax
=> [1, 20]
但是,我只对获得索引低于最大值的最小值感兴趣,在这种情况下:
=> [3, 20]
我一直试图想出不同的方法来做到这一点,但没有多少运气。我试图找到一种方法来获得最小/最大值,其中两者之间的差异返回负值,但无法找到一种方法来做到这一点。
编辑:为了澄清,这基本上是一个股票选择器。数组元素是每天股票的价格。我有兴趣最大化阵列中最小/最大值之间的差异(当股票= 3时买入,当股票= 15时卖出)。值可能不是绝对最小值或最大值。
答案 0 :(得分:0)
我会尝试:
array[0..array.index(array.max)].minmax
所以只需将minmax应用于第一个数组和最大索引之间的元素。
要返回索引值,只需使用map迭代minmax数组并将其索引放入新数组中:
array = [10, 12, 5, 3, 20, 1, 9]
min_max_array = array[0..array.index(array.max)].minmax
min_max_index = min_max_array.map{|v| array.index(v)}