📜  ruby max 2 numbers - Ruby (1)

📅  最后修改于: 2023-12-03 15:04:56.715000             🧑  作者: Mango

Ruby: 找出最大的2个数

在开发中,有时我们需要一种机制,能够快速准确地找到一组数字中的最大的2个数。Ruby中有很多种方式实现这一目标,本文将展示其中一种。

方法一:使用sort

Ruby中的sort方法可以将数组进行排序,默认为升序排序。因此,我们只需将数组逆序排列,再取前两个元素即可。

def max_two_numbers(arr)
  arr.sort.reverse[0, 2]
end
方法二:使用max和delete_at

Ruby中的max方法可以返回一个数组中的最大元素。因此,我们可以先找到数组中最大的元素,并将其从数组中删除,再找到新的最大元素即可。

def max_two_numbers(arr)
  max1 = arr.max
  arr.delete_at(arr.index(max1) || arr.length)
  max2 = arr.max
  return [max1, max2]
end
方法三:使用数组迭代器

Ruby中的max_by方法可以返回一个数组中使指定块返回最大值的第一个元素。因此,我们可以重复调用max_by方法,每次都返回当前数组中的最大值,并将其从数组中删除,直到我们找到了两个最大值。

def max_two_numbers(arr)
  maxes = []
  2.times do
    max = arr.max_by {|n| n}
    maxes << max
    arr.delete(max)
  end
  return maxes
end

以上是 Ruby 中查找最大的两个数的三种方法。每种方法的效率取决于数据规模和实际应用场景。在选择时需要谨慎考虑。