[英]Find largest sub array out of ruby multidimensional array
我想找出ruby中多維數組中最大的子數組。 我有一個多維數組如下:
array = [[1,20],[2,40],[5,100],[7,15],[9,22]]
我想要第二個元素最大的子數組的第一個元素,就像上面的例子中我希望5
作為輸出,因為子數組[5,100]
第二個元素是最大的,它是100
。 輸出為5
。
如果超過一個元素是最大的,那么我想要所有這些。
例如:數組= [[1,20],[2,40],[5,100],[7,15],[9,22],[12,100]]
在這種情況下的輸出將是[5,12]
提前致謝。
您可以使用Enumerable#max_by
方法選擇max元素,然后將該元素投影到結果值。
array.max_by{|a| a[1]}[0]
更新:
如果希望所有元素都具有最大值,則可以先從數組中獲取最大值,然后使用該值過濾數組。
max_value = array.max_by{|a| a[1]}[1]
results = array.select{|a| a[1] == max_value}.map(&:first)
你可以使用一行表達式,但我認為它的可讀性較差
array.group_by{|a| a[1]}.max_by{|k,v| k}[1].map(&:first)
嘗試類似的東西
array.max_by(&:last).first
您可以使用Arie的答案來計算largest
:
largest = array.max_by { |a| a[1] }[1] #=> 100
然后將Enumerable#map
與Array#compact
結合使用:
array.map { |a| a.first if a[1] == largest}.compact #=> [5, 12]
使用Hash
,正如我在你之前的問題的 回答中所提到的......
hash
#=> {1=>20, 2=>40, 5=>100, 7=>15, 9=>22, 12=>100}
最大價值:
hash.values.max
#=> 100
具有最大值的鍵值對:
hash.select { |k, v| v == hash.values.max }
#=> {5=>100, 12=>100}
具有最大值的鍵:
hash.select { |k, v| v == hash.values.max }.keys
#=> [5, 12]
a = [[1,20],[2,40],[5,100],[7,15],[9,22],[12,100]]
max = a.map(&:last).max
a.select{|x|x.last==max}.map(&:first) #=> [5, 12]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.