有兩組網址,都包含數百萬個網址。現在,我如何從A中得到一個不在B中的URL?什麼是最好的方法?
注意:您可以使用任何技術,使用任何工具,如數據庫,mapreduce,哈希碼等。我們應該考慮內存高效,時間效率高。你必須考慮到每個集合(A和B)都有數以百萬計的URL。我們應該嘗試使用更少的內存和更少的時間來查找特定的URL。如何僅在集合A中找到不同集合的網址
2
A
回答
3
體面算法可能是:所有的集合A
加載到一個HashMap,O(一)
遍歷組B,並且對於每個項,刪除從組A中的相同的值(從hashmap)如果存在,O(b)
然後你的hashmap有結果。這將是O(a + b),其中a是集合A的大小,b是集合B的大小。(實際上,這將乘以散列時間,理想情況下對應於大約O 。)
2
東西也許有點天真可能會像
- 程序排序列出一個
- 排序名單B
導航列表A和B一起這樣的:
一個。增加指向A的指針和元素匹配時指向B的指針
b。到B增量指針,直到元件中的下一個元素匹配
a
或直到記錄b
在B
在a
的下一個元素之後將出現(治丟棄在乙不在A元素)℃。當按照這些規則遞增時發現匹配,使得
B
中的下一個元素b
與A
中的下一個元素a
不匹配。
這實際上可能是適用Bloom filters一個有趣的地方:構建布隆過濾器的集B則集合A中的每一個URL確定它是否是在集B.隨着錯誤的diminishingly小概率你應該能夠找到A中的所有網址不在B中。
1
(sort -u A; cat B B) | sort | uniq -u
相關問題
- 1. 如何在集合中找到一個對象,其中集合具有相同類型的子集合?
- 2. MongoDB:如何在mongo集合中找到不同的數組對?
- 3. 如何從集合A中獲取不在集合B中的元素?即AB
- 4. Backbone.js的集合網址
- 5. 如何找到mandelbrot集合的中心
- 6. 在MongoDB中找不到數據集合
- 7. 集合中的不同值
- 8. 如何:在Java中找到兩個集合之間的集合差異
- 9. 如何查找集合的交集
- 10. 如何找到不同值的數量從集合
- 11. LINQ從集合A中選擇不在集合B中的項目
- 12. MongoDB幫助獲取集合中的所有元素A不在集合中B
- 13. 集合與模式不同如何集合
- 14. 如何從集合B中刪除集合A中的單個集合項目的所有實例?
- 15. Ruby Ohm,如何在一個集合或集合中找到記錄?
- 16. 如何綁定到集合而不使用集合的索引?
- 17. 如何在Silverlight中將兩個可觀察的集合合併到集合中
- 18. 將數據網格綁定到集合中的嵌套集合
- 19. 如何將集合的集合綁定到Silverlight 4中的數據網格
- 20. MDX:集合中的集合
- 21. 集合中的Hibernate集合
- 22. 如何在Meteor 1.3中僅使用集合名稱獲取集合?
- 23. 如何綁定到WPF集合中的集合
- 24. 如何將集合添加到Backbone中的另一個集合
- 25. 如何訪問集合內的集合
- 26. 集合A中的所有文件是否在不同結構化的集合B中佔有?
- 27. 找不到python的集合模塊3
- 28. 不同的集合函數
- 29. SQL:選擇集合A的不是B
- 30. 將Webpart部署到兩個不同網頁集合的網站
什麼意思?內存高效?時間有效? – 2010-09-29 01:38:57
你想只找到一個網址或全部網址嗎? – JoshD 2010-09-29 01:41:52
有多少百萬個網址?特別是,我們可以期待它們都適合記憶嗎?這是你需要做的一次,還是一次重複? – 2010-09-29 01:43:15