码迷,mamicode.com
首页 > 其他好文 > 详细

求几亿个数中不重复元素的个数

时间:2014-08-26 13:19:26      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   color   文件   div   sp   size   on   算法   ad   

题目:

  有2.5亿个无符号整数(但在文件里面),要求找出这2.5亿个数字里面,不重复的数字的个数(那些只出现一次的数字的数目);另外,可用的内存限定为600M;要求算法高效、最优。

 

思路:

  这么多个数字,全部读到内存里面肯定不行的,那么就要读一些处理一些。试想用一个标志的数组,里面放的是true或者false,表示一个数字是否是第一次被读到,最好能够把这个数字就当做数组的下标来访问这个标志,比如读到234432,看flag[234432]是true还是false,这样就很方便了(这和哈希的思想不是挺类似的嘛)。

  好了,那么现在主要矛盾在这个flag标志数组该如何定义上了。无符号int,大小从 0 到 2^32 - 1(4字节的话),那么要保证数组足够大以至于能够用下标 2^32 - 1 来访问这个数的标志。true或false,那么也只要一位就够了,那么这个flag数组有多大呢:

  2^32 个bit 也就是 2^29 byte 也就 2^19 kb 也就 2^9 M 也就 512 M。这个大小小于600M,那么就内存来说是可以的。

 

总结:

  用位来表明一个数是否出现过。

  直接把数字当做位数组的下标来进行访问。

求几亿个数中不重复元素的个数

标签:style   color   文件   div   sp   size   on   算法   ad   

原文地址:http://www.cnblogs.com/jiayith/p/3936969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!