![](/img/trans.png)
[英]How to modify my method to search and then remove duplicates in O(N) or O(N * log N)?
[英]Bloom filter to remove duplicates from a stream of integers in O(n)
如何创建布隆过滤器以从O(n)时间复杂度和O(1)空间复杂度的整数流中删除重复元素? 如果可能的话,如果有人能指出正确的方向,我将不胜感激。
我相当确定这只是:
对于每个元素:
现在有两个问题:
考虑到约束,我不认为可以避免这些问题中的任何一个-两者都是使用(仅)bloom过滤器的组成部分。
如果我们不是处理流,而是处理列表,则可以通过记录bloom过滤器拾取的所有元素来消除误报,然后再次遍历该列表以检查我们的候选列表,以确保它们没有是实际的重复项。 这仍然是O(n)时间,但显然不是O(1)空间。
Google Guava提供了布隆过滤器实现。
请注意,光晕过滤器本身是不够的。 如果Bloom filter声称其中没有数字,则该数字中也没有数字。 但是,如果它声称该数字已经存在,则有可能是错误的。 因此,您需要确定另一个数据结构,并使用Bloomfilter减少该数据结构中的查找次数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.