按位比较,比如先遍历一遍数字,判断第一位是0还是1多,然后便利多的那一位的数字,判断第二位是0还是1多,依次判断到第32位,就是出现次数最多的数字了
好吧,这个算法不对
我感觉这个题目是不是考的排序算法啊,这80亿个数字如果是有序的,则根本不需要2G内存
如果是无序的,则2G内存不够用,那么肯定要引入额外硬盘空间,既然都引入额外硬盘空间了,那也不用这么多内存了。
所以我估计题目应该是这样:
硬盘空间固定,存储了80亿个随机数字,硬盘可写,只有2G内存,找到其中出现次数最多的数。
解决方案就是排序,但是改写硬盘数据的时候必须成对的改写
chainofhonor
4粉丝 · 33赞
搜索
十大最耐用的硬盘
排列三神奇算法
自学编程
程序员级别
出号算法
从零开始自学编程
如果觉得《挑战程序员同学 如何只用2GB内存从20/40/80亿个整数中找到出现次数最多的数?》对你有帮助,请点赞、收藏,并留下你的观点哦!