精华帖 (0) :: 良好帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-29
各位都是高手,碰到这样的问题,恐怕我只会遍历了,学习了。。。
|
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
先把A的记录压入一个trie树
然后用B的记录来做命中 没有命中的URL就是不重复的 |
|
返回顶楼 | |
发表时间:2010-09-29
还是需要先排序,将B组用Binary Tree排序。
1亿相当于2^27次方,往后有Log2次,即27次去查找是否存在B组中。 最差情况 1亿 * 27 = 27亿次才能运行完。 |
|
返回顶楼 | |
发表时间:2010-09-29
不是说可以是存在数据库中吗?如果是oracle我会这么做
select url from a minus select url from b |
|
返回顶楼 | |
发表时间:2010-09-29
放数据库,最快的!
|
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
xiangkun 写道 放数据库,最快的!
为什么?能解释下吗?我刚入行不久!我觉得人家一个公司设计出来的数据库的执行效率再怎么着也比一个人想出来的方案执行效率高吧 看错了,看成放弃数据库,是最快的! 我晕 :D |
|
返回顶楼 | |
发表时间:2010-09-29
olylakers 写道 刚和一个朋友聊了下,觉得还有一个思路
把B的URL存成3层N叉树,然后依次遍历A中URL,将其到存放B的URL的3层N叉树种去查找,如果存在的话,最多三次就可以找到。 不明白为什么是3层?求解答 |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2010-09-29
|
|
返回顶楼 | |
发表时间:2010-09-29
考minus函数的算法?
|
|
返回顶楼 | |