中给的条件,但也仅仅适合本题目,
(
不会有重复的数字,同时不与其余的数进行关联
)
问题实例:
1).2.5
亿个整数中找出不重复的整数的个数,内存空间不足以容纳这
2.5
亿个整数。
有点像鸽巢原理,整数个数为
2^32,
也就是,我们可以将这
2^32
个数,划分为
2^8
个区域
(
比如用单个文件代表一个区域
)
,然后将数据分离到不同的区域,然后不同的区域在利
用
bitmap
就可以直接解决了。也就是说只要有足够的磁盘空间,就可以很方便的解决。
11.
生成递增整形数字的方法,要求高可用性(当机重启后仍递增)
直接取时间不就是递增的么?他又没说一定只能递增
1
。。。
一文件记录最大使用到的数字,例如
N
,内存记录当前使用最大数字例如
10
,当内存记录
使用到
N-20
的时候,往文件记录中写入
N+50.
确保不会出现重复数据。优点不用说,和
系统无关,不需要去判定系统是怎么宕机之类的。缺点也有:宕机重启了,那么读取文件
中的读数
N
,然后往文件中写入
N+50
,然后再开始计数。这样可导致部分自增数据没有
被用上。
评论