从SortedSet

时间:2017-06-26 04:31:00

标签: ruby

我找到SortedSet#max,但似乎是O(N)。现在我会做这样的事情:

s = SortedSet.new((1..100000).to_a.reverse)

其中reverse只是为了确保。

min_element = nil; s.each { |x| min_element = x; break }

对于最大元素,我会构建另一个SortedSet,其中所有值乘以-1并执行相同的操作。有更传统的方法吗?

1 个答案:

答案 0 :(得分:1)

Monkey patch SortedSet

class SortedSet
  def max
    @keys[-1]
  end

  def min
    @keys[0]
  end
end

那是O(1)。