【发布时间】:2011-05-28 13:42:17
【问题描述】:
这显然是一个面试问题(在一组面试问题中找到),但即使不是,它也很酷。
我们被告知要在所有复杂性度量上有效地做到这一点。我想创建一个 HashMap 将单词映射到它们的频率。这在时间和空间复杂度上是 O(n),但是由于可能有很多单词,我们不能假设我们可以将所有内容都存储在内存中。
我必须补充一点,问题中没有任何内容表明单词不能存储在内存中,但如果是这样的话怎么办?如果不是这样,那么这个问题似乎就没有那么具有挑战性了。
【问题讨论】:
-
无关紧要的事情:你在哪里找到面试问题的集合?
-
这是我朋友借给我的一本书。以下网站声称收集了谷歌面试问题。 blog.seattleinterviewcoach.com/2009/02/…
-
将它们存储在哈希映射中是 O(n),但是如果没有后续的 O(n log n) 排序,这不会给你前 10 名。
-
@Victor 我们可以只跟踪前十个频率,只做一次线性传递。
-
“关于所有复杂性度量”?有一个 O(1) 空间(如果“10”是一个常数),O(n^2) 时间算法,以及一个 O(n) 空间和 O(n) 时间算法,那么在所有复杂性度量上哪个更好?