![](/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.