这显然是一道面试题(在面试题集中找到的),但即使不是,也很酷。
我们被告知要在所有复杂性度量上高效地执行此操作。我想创建一个 HashMap 将单词映射到它们的频率。这在时间和空间复杂度上是 O(n),但由于可能有很多单词,我们不能假设我们可以将所有内容都存储在内存中。
我必须补充一点,问题中没有任何内容说单词不能存储在内存中,但如果是这样呢?如果不是这种情况,那么这个问题似乎就不那么具有挑战性了。
最佳答案
为我自己的时间优化:
sort file | uniq -c | sort -nr | head -10
可能后跟 awk '{print $2}'
以消除计数。
关于algorithm - 给定一个文件,尽可能高效地找到十个最常出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495241/