计算未排序数据中唯一对的数量和非唯一对的实例

我有以下形式的数据:

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%)的误报率. (我也使用频谱绽放实现了这个)

我不那么聪明,所以我确信那里有更好的解决方案,我想听听你最喜欢的哈希表实现/任何其他想法.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...