我试图在ruby中返回数组数组的最大值
对于1d数组这是有效的
arr = [99, 3, 14, 11, 1, 12]
position = arr.each_index.max
如何在ruby
中实现多维数组的相同功能arr = [[99, 3, 14], [11, 1, 12], [1.....]
我尝试使用flatten然后找到max的索引并尝试计算出列和行但是没有得到正确的结果并且感觉不对,有没有一种干净的方法来实现这个与ruby?感谢。
答案 0 :(得分:1)
这应该有效
arr.map(&:max).max
要查找索引,请尝试:
1.9.3p125 :018 > arr = [[99, 3, 14], [11, 1, 12], [1,10]]
=> [[99, 3, 14], [11, 1, 12], [1, 10]]
1.9.3p125 :019 > arr.map{|sub| sub.each_with_index.max}.each_with_index.max_by{|sub_max| sub_max[0]}
=> [[99, 0], 0]
答案 1 :(得分:1)
首先获得最大值:
m = arr.flatten.max
#=> 99
然后听起来你要么想要包含m:
的数组的索引arr.index{|x| x.include? m}
#=> 0
或该索引加上该数组中的m索引
[i = arr.index{|x| x.include? m}, arr[i].index(m)]
#=> [0, 0]