在给定的实例中,我们可以在文本流中找到唯一的单词。 我能想到的一个天真的解决方案是使用hashmap来保持单词数量。
但这需要在hashmap中保留字数超过1的单词。在长文本流的情况下,维护很多单词。有没有办法解决空间复杂性问题。
答案 0 :(得分:0)
如果不支付空间复杂度,您无法获得不同单词完全的数量。但是,您可以使用此Flajolet-Martin的幻灯片20中所述的slide deck方法获得相当不错的估算值。
假设数据流由从一组大小N
中选择的元素组成,您可以执行以下步骤,从上面链接的幻灯片中复制。
h
,将每个N
元素映射到至少log_2 (N)
位。a
,让r(a)
为0
中的h(a)
结尾数。记录R =看到的最大r(a)
。
估算的不同元素数量= 2^R
。