2012-01-01 76 views
11
a = { 
     1 => ["walmart", "walmart.com", 300.0], 
     2 => ["amazon", "amazon.com", 350.0], 
     ... 
    } 

如何查找数组中float值最低的元素?在散列中查找最低值

回答

-4

请参阅下面答案中的min_by解决方案。正如评论中指出的那样,我对这个问题的原始答案效率较低。

+7

-1。当存在“O(N)”解决方案时,这通常是错误的算法,因为它是'O(N log(N))'。 – 2012-01-02 03:58:25

25

min_by作为Enumerable模块的方法可用。

它获取哈希中所有值的数组,然后根据每个数组的最后一个元素选取最小值。

a.values.min_by(&:last) 
2

另一种有用的方法是从可枚举模块sort_by为好。它会按升序排列你的散列。然后将方法链接到first以获取最低值。

a.sort_by { |key, value| value }.first