我有以下形式的数据:
ID ATTR
3 10
1 20
1 20
4 30
... ...
其中 ID 和 Attr 未排序并且可能包含重复项。 ID的范围是1-20,000左右,ATTR是unsigned int。我可能需要一次处理 100,000 到 500,000 对之间的任何地方。
我在寻找:
- 唯一对的数量。
- 非唯一对弹出的次数。
所以在上面的数据中,我想知道 (1,20) 出现了两次并且有 3 个唯一的对。
我目前正在以我的幼稚方法使用哈希表。我保留一个唯一对的计数器,如果我插入的项目已经存在,则减少计数器。我还保留了非唯一对的 ID 数组。 (都是初次见面)
性能和尺寸同样值得关注。考虑到性能和尺寸问题,我实际上可以接受相对较高的误报率(比如 0.5%)。 (我还使用光谱绽放实现了这一点)
我没那么聪明,所以我确信有更好的解决方案,并且我想听听您最喜欢的哈希表实现/任何其他想法。 :)
具有如下键的哈希表<id>=<attr>
是这个问题的一个很好的解决方案。我想,如果你能容忍错误,你可以通过绽放变得更小/更快。但你真的需要这样做吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)