我正在使用Ruby 2.4。我有一个数组数组
arr = [[1, 8, 9, 10], [2, 3, 7], [0, 2, 15, 4, 27, 3], [2]]
如何找到所有子数组的最大元素数?例如,在上面,答案是6,因为第三个数组有6个元素,超过其他数组的元素数。
答案 0 :(得分:5)
这很简单
arr.max_by(&:size).size
=> 6
答案 1 :(得分:3)
即使你不了解max_by
,它也非常简单:
arr.map(&:size).max
#=> 6
答案 2 :(得分:1)
您可以在阵列上使用max_by
:
array.max_by { |i| i.length }.length
答案 3 :(得分:1)
假设:
> arr=[[1, 8, 9, 10], [2, 3, 7], [0, 2, 15, 4, 27, 3], [2]]
使用max_by:
> arr.max_by {|l| l.length}
=> [0, 2, 15, 4, 27, 3]
或者,快捷方式:
> arr.max_by(&:length)
=> [0, 2, 15, 4, 27, 3]
如果你想要6
vs实际数组:
> arr.max_by {|l| l.length}.length
=> 6
答案 4 :(得分:1)
max_by
是前往此处的方式,但您也可以使用max
:
arr.max { |a, b| a.size <=> b.size }.size
#=> 6
require 'fruity'
arr = Array.new(10000) { |arr| Array.new(rand 10) }
compare do
maxby_size { arr.max_by(&:size).size }
maxby_count { arr.max_by(&:count).count }
map_max { arr.map(&:size).max }
max { arr.max { |a,b| a.size <=> b.size }.size }
reduce { arr.reduce(0) { |memo, a| memo > a.length ? memo : a.length } }
end
#Running each test 2 times. Test will take about 1 second.
#map_max is faster than max by 2x ± 0.1
#max is similar to reduce
#reduce is similar to maxby_size
#maxby_size is similar to maxby_count