论坛首页 招聘求职论坛

昨天的一个面试题:如何从存放在A和B中的一亿条URL中找出A中有而B中没有的URL

浏览 28271 次
精华帖 (0) :: 良好帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-09-29  
各位都是高手,碰到这样的问题,恐怕我只会遍历了,学习了。。。
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
先把A的记录压入一个trie树
然后用B的记录来做命中
没有命中的URL就是不重复的
0 请登录后投票
   发表时间:2010-09-29  
还是需要先排序,将B组用Binary Tree排序。

1亿相当于2^27次方,往后有Log2次,即27次去查找是否存在B组中。

最差情况

1亿 * 27 = 27亿次才能运行完。



0 请登录后投票
   发表时间:2010-09-29  
不是说可以是存在数据库中吗?如果是oracle我会这么做
   select url from a
   minus
   select url from b
0 请登录后投票
   发表时间:2010-09-29  
放数据库,最快的!
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
xiangkun 写道
放数据库,最快的!




为什么?能解释下吗?我刚入行不久!我觉得人家一个公司设计出来的数据库的执行效率再怎么着也比一个人想出来的方案执行效率高吧

看错了,看成放弃数据库,是最快的! 我晕 :D
0 请登录后投票
   发表时间:2010-09-29  
olylakers 写道
刚和一个朋友聊了下,觉得还有一个思路

把B的URL存成3层N叉树,然后依次遍历A中URL,将其到存放B的URL的3层N叉树种去查找,如果存在的话,最多三次就可以找到。

不明白为什么是3层?求解答
0 请登录后投票
   发表时间:2010-09-29  
直接使用sql就可以了!
select id from (select id from a union all select id from b) c group by id having count(id) > 1
0 请登录后投票
   发表时间:2010-09-29  

Bloom Filter

http://blog.csdn.net/jiaomeng/archive/2007/01/27/1495500.aspx

0 请登录后投票
   发表时间:2010-09-29  
考minus函数的算法?
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics