仅当 min 位于数组的较低索引位置时,才将 .minmax 用于 return 值

Using .minmax to return values only when min is in lower index position of an array

有没有办法只 return 数组的 min/max 值,其中最小值位于比最大值更低的索引位置?

例如,假设我们有:

array = [10, 12, 5, 3, 20, 1, 9]

如果我们对该数组执行 .minmax,我们将得到以下结果:

array.minmax
=> [1, 20]

但是,我只对获取索引低于最大值的最小值感兴趣,在本例中:

=> [3, 20]

我一直在尝试考虑不同的方法来做到这一点,但运气不佳。我试图找到一种方法来获取 min/max 值,其中两个 return 之间的差异为负值,但找不到方法来做到这一点。

编辑:澄清一下,这本质上是一个选股工具。数组元素是股票每天的价格。我感兴趣的是最大化数组中 min/max 之间的差异(在股票 = 3 的那一天买入,在股票 = 15 的那一天卖出)。这些值可能不是绝对最小值或最大值。

我会尝试:

array[0..array.index(array.max)].minmax

所以只需将 minmax 应用于数组第一个元素和最大值索引之间的元素。

要return索引值,只需使用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)}