在哈希表中查找最小值

17
a = { 
      1 => ["walmart", "walmart.com", 300.0], 
      2 => ["amazon", "amazon.com", 350.0], 
      ...
    } 

如何找到具有其数组中最低浮点值的元素?

3个回答

31

min_by是从Enumerable模块中提供的一个方法。

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

a.values.min_by(&:last)

4

另一个有用的方法是来自Enumerable模块的sort_by。它会将您的哈希表按升序排列。然后使用first链接该方法以获取最低值。

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

-5
请看下面答案中的min_by解决方案。我的原始回答对这个问题的效率要低得多,正如评论所指出的那样。

7
一般来说,这个算法是错误的,因为它的时间复杂度为 O(N log(N)),而有一种时间复杂度为 O(N) 的解决方案。 - Marc-André Lafortune

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接