【发布时间】:2011-02-02 17:20:56
【问题描述】:
面试题:
在下方编辑 给你一个数组。你用它做了 2 个堆,一个 minheap 和另一个 max heap。现在使用这 2 个提供的堆在 O(nlog n) 时间内找到数组的中位数。
更正的问题 数字是随机生成并存储到(扩展)数组中的。您将如何跟踪中位数?
解决方案 这个问题可以使用 2 个堆来解决,并且总是可以在 O(1) 时间内访问中位数。
【问题讨论】:
-
我猜实际的问题是即使在多次插入之后也能够快速确定中位数并且不知何故在翻译中迷路了。坦率地说,这看起来像是一个伪装成面试问题的作业问题。
-
@Moron:不同意家庭作业评估。只复制作业陈述而不引入“翻译中丢失”问题太容易了。这听起来更像是一个在翻译中丢失的面试问题。
-
@Jason:我并不是说 EFreak 已经这样做了(或者没有这样做)。可能面试官可能已经看过教科书......
-
如果允许你花费 O(N log N) 时间,为什么不直接对数组进行排序呢?
-
伙计们!我想我把这个问题搞砸了:P n @Moron:我不上学:)所以没有作业问题。我现在发布更正后的问题。
标签: algorithm heap complexity-theory