|
kingnameMay 2, 2018 via iPhone
1
你知道集合是可以求交集的吗?你直接求 A 与 B 的交集就可以了。
|
|
znMay 2, 2018
2
要看你的实现了,如果遍历速度、定位速度足够快,那就直接遍历,就是这样么简单粗暴。
|
|
3
参考 MySQL 的 Join 实现:(Nested Loop join)[https://dev.mysql.com/doc/refman/5.7/en/nested-loop-joins.html]
遍历 A 是避免不了的,那我们可以在 B 上做索引来实现加速。 楼主自己想到了将 B 转为 K-V 形式这就相当于 hash 索引,时间复杂度为 O(n)。 当然可以将 B 做成其他的数据结构,比如平衡树等。 |
|
owenliangMay 2, 2018
4
你得说说业务场景,脱离业务谈算法感觉不太对劲。
|
|
davinciMay 2, 2018
5
如果内存存的下两个百万集合,直接 hash。如果两个集合都大到内存放不下,可以参考数据库的 hash join 实现。
|
|
shoumuMay 2, 2018
7
A、B 集合分别以 ID 进行排序,然后从头到位遍历 Join 即可
|
|
jorneyrMay 3, 2018
8
Hash 的方式可以的,百万不算多
|
|
buliuguMay 3, 2018
9
bitmap 了解一下
|