首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在存储在文件中的数字中查找再次出现的数字

在存储在文件中的数字中查找再次出现的数字
EN

Stack Overflow用户
提问于 2010-08-02 22:16:24
回答 14查看 339关注 0票数 2

比方说,我在一个文件中存储了100亿个数字。我如何找到之前已经出现过一次的数字?

我不能在数组中一次填充数十亿个数字,然后保持一个简单的嵌套循环来检查这个数字以前是否出现过。

你将如何处理这个问题?

提前感谢:)

EN

Stack Overflow用户

发布于 2010-08-03 00:53:50

重要的问题是,你是否想要高效地解决这个问题,或者你是否想要

如果你真的有100亿个数字,并且只有一个重复,那么你就处于“大海捞针”类型的情况下。直观地说,如果没有非常肮脏和不稳定的解决方案,如果不存储大量的数字,就没有希望解决这个问题。

相反,转向概率解决方案,它已经在这个问题的几乎所有实际应用中使用(在网络分析中,您试图做的是寻找鼠标,即在大型数据集中很少出现的元素)。

一种可能的解决方案,可以找到准确的结果:使用足够高分辨率的Bloom filter。要么使用过滤器来确定元素是否已经被看到,或者,如果你想要完美的准确性,可以使用(正如kbrimington建议的那样使用标准哈希表)过滤器来过滤掉你不可能看到的元素,然后在第二次遍历时,确定你实际看到的元素两次。

如果你的问题稍有不同-例如,你知道你至少有0.001%的元素重复了两次,你想要找出大约有多少,或者你想从这些元素中随机抽样-那么在Flajolet & Martin,Alon等人的脉络中,存在着一大堆概率流算法,它们非常有趣(更不用说效率很高了)。

票数 4
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3388600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档