簡體   English   中英

從ruby多維數組中查找最大的子數組

[英]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#mapArray#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM