城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

挑战程序员同学,如何只用2GB内存从204080亿个整数中找

3月23日 栀璃鸢投稿
  一、用4字节表示的整数个数为23240亿,而用2字节表示的无符号整数个数为2166万。
  二、2G231B20亿字节。
  三、要找出出现次数最多的数,则应记录每个数出现的次数,最快的方法是在内存中将每个数出现的次数记录下来,记录的方法则是内存地址对应数,相应地址的内存单元记录次数,但2G内存以字节为单位仅能记录20亿个数,且每个数出现的次数大于255将会出现溢出风险。因此,这一方案不可取。
  四、这样只能将每个次出现的次数记录在磁盘上。这样在磁盘上建一个16G的文件,每4字节对应一个整数,可对应40亿个整数,并用于记录相应整数的出现的次数。
  1、将文件初始化。
  2、依次读取数据,并用无符号整数记录在磁盘文件中,如出现溢出,则该数为次数最多的数。
  3、从文件中读取各数出现的次数,用一个变量A记录最高次数,再用一个变量B记录最高次数出现的数据个数,要用个文件依次记录最高次数出现的数。当最高次数增加时,A1,B置1,文件中写入该数,同次数的数出现时,B1,文件相应位置写入该数,直到全部读完。
  这样根本不需2G内存。
  需求:
  使用2G的内存,找出80亿个数字中出现最多的数字。
  假设:
  整数为4字节(2324G),即最大40多亿。
  所有的数字有80亿个。所有数字在硬盘中,本身不会占用内存。
  所用内存为2G多一些,例如有限的变量。但多出的内存和2G相比可以忽略不计。
  设计:80亿的计数可以用4字节保存(2324G)。因为如果计数超过一半,则表明该数字一定是出现最多的。
  2G的内存约可以保存5亿多数字的计数(2G4512M)。
  也就是说,将2G的内存分成单位为4字节的数组,可以一次获得05亿多之间出现最多的数字。
  步骤:顺序扫描80亿个数字,忽略0512M之外的数字,每个数字N的出现个数累加存放在第N个数组元素中。最后将最出现最多的数字及其次数保存起来,出现并列第一时,只保存第一个数字。如果过程中某数字出现个数超过40亿,则直接结束。
  再次扫描所有数字,此次忽略512M1G之外的数字。每个数字N的出现个数累加存放在第N512M个数组元素中。本轮所获得的数字的出现个数和第一轮结果比较,保存较大的那个。
  由于整数取值范围为4G,所以最多扫描8次后即可获得最终结果。
  问题:
  如果整数长度为8字节,则需要扫描约300多亿次(264512M240)。所以此算法并不适用于8字节的整数。
  讨论:
  当数字足够多,且数字取值范围足够大时,以有限内存获取出现次数最多的数字几乎是不可能的。因为数字的取值范围极大,且数字极多,任何哈希或其它分片的算法都有可能出现极端情况,导致分片数据过多而无法一次性导入内存计算。除非我们预先知道部分数字规律,否则考虑到效率,应该只会要求得到近似结果。
  2g内存不是重点,80亿数字和取值范围才是重要的:
  1。80亿的数字至少需要加载一遍,才知道有哪些数据
  2。如果是取mapsize216或者80亿开方,一个mapint,int大mapsize的空间不到1m
  3。顺序读80亿数据,除以mapsize取余,同一余数放追加同一文件,余数作文件名
  4。顺序读取步骤3产生的所有文件,读取的每个文件时新建mapsize大小的hashmap,统计每个数的次数,再取该hashmap中出现最多次数的整数放到新的map中
  5。依次读完步骤3产生的文件,就能得到每个文件最多次数的整数map
  所有步骤需要80亿数据的两次读盘,一次写盘,mapsize次取最大值,80亿数据取余数
  只有不是程序员才会出这样的题,你要知道,3、8、55246546是整数,但12345的阶乘,葛立恒数等也是整数,葛立恒数的葛立恒数次方也是整数,你没有限定整数范围,所以我觉得真正的程序员会先和你谈需求。另,我就是程序员。
  64mb内存就够。假设你的数据都存在文件中。
  1,分治法,空间换时间,分片读取hash到n个文件中
  2,统计每个文件中出现次数最多的数字
  3,堆排序,对比每个文件中出现次数最多的数字。
  4,结束
  2G只能放5亿个整数。
  先建个数组:
  intnum〔5亿〕;
  分页处理数字,每页5亿个。
  第一次遍历数字
  if(数字0数字5亿)
  num〔数字〕
  记录次数最多的数和已处理的数的总数
  第二次遍历数字
  if(数字5亿数字10亿)
  num〔数字5亿〕
  记录次数最多的数和已处理的数的总数
  依次循环处理完所有的数字。就得到结果。
  如果数字集允许删除,每处理一页就删掉已处理的数,效率就要高得多了。
  程序只涉及到逻辑运算和加法,速度是最快的。
  把数字变成字符串处理
  定义一个结构是a,数字,次数
  建立动态数组,数组元素类型为结构a
  初始数据有两个0和最大数。升序。
  读取一块数据
  扫描数据块,对每一个数字在数组中执行比较
  对当前数字在数组中插入排序,如果没找到,比上一个数字小,比下一个数字大,插入这个数字,其次数为1
  如果找到,其次数加一
  读取下一块
  没要求时间,也就不用说优化了。
  只需要考察这个数组占用空间大小。
  假定是4字节整数,20亿数字需要80亿字节。2G内存是20亿字节,显然全部在内存运行是不够的。
  把数组延伸到外存是必要的。
  由于数组是有序的,显然可以分块。我们可以把数组分成16,32,64等块数。
  算法核心是插入排序。
  如果追求更高效率,可以选择归并排序。相当于对原数据先进行分块排序再合并,合并时重复数据压缩为一个数据和出现次数。
  因为有外存,操作系统会提供虚拟内存,理论上不用考虑2G内存问题。
  这里提出2G内存限制,无非是把原数据划分为多少块来做的问题,可归结为分治算法。
  这是一个wordcount取max的计算根据mapreduce思路先将待统计的数据集分区让相同的数字分到同一个分区分区内进行groupbycount后取max的一条再与其它分区的max结果两两比较保留较大的一条最终结果就是全部数据里出现次数最大的一条
投诉 评论 转载

巩富文委员加速推进元宇宙脱虚向实当前,新一轮科技革命和产业变革加速演进,前瞻布局发展元宇宙,是做大做强数字经济,抢占未来竞争制高点,把握发展主动权的重要现实路径。元宇宙行不行,底层在基础设施。全国政协委……华为手机和苹果手机使用差距到底在哪里?一个是民族自豪品牌,一个是国外装牛品牌。所以想自豪用华为,想装牛用。技术只是一部分,更多的是心里因素。有不少崇洋媚外的只要是进口就一定比国产的香!我没有用过苹果手机……即科金融创新赋能数字化全面发展金融科技又逢重大利好2022年伊始,我国金融科技发展的新阶段顶层设计就已出炉,为未来四年锚定了发展目标与方向。据中国人民银行公告,《金融科技发展规划(20222025年)》(以下简称《规划》)已于……如果我国彻底取消燃油车,全由新能源汽车代替,会导致什么结果?依照现在新能源汽车的研发情况,如果彻底取消燃油车,不太现实。虽说新能源车有很多的好处,但很多时候不实用,需要依附的特定条件比较多。而且我国地域很大,很多地方酷暑严寒,对新能源汽……几何EX3正式开启预售价格5。97万元起日前,几何汽车宣布旗下全新A0级纯电动SUVEX3功夫牛正式开启预售,预售价格5。97万元起。新车搭载容量为37。23kWh的三元锂电池组,NEDC续航里程为322km。……拉卡拉2021年报三大看点数字人民币门店数字化经营区块链服务4月28日晚,定位于商户数字化经营服务商的拉卡拉(300773。SZ)发布2021年年报。公司全年实现营业收入65。96亿元,同比增长19;归属上市公司股东的净利润10。83亿……大数据时代,如何让个人信息不再裸奔?来源:人民网原创稿随着移动互联网的发展,人们的衣食住行都离不开各种各样的APP。近日,工业和信息化部针对APP超范围、高频次索取权限,非服务场景所必需收集用户个人信息,欺……一文带你看懂MES与APS的区别来源:智慧工厂APS应该说本来是MES的一个模块,也许是因为优化排产太重要了,技术门槛太高了,才拿出来单独作为一个功能软件使用。随着制造精益化,制造数字化的不断发展……6款无法拒绝的优质实用app要偷偷变优秀相见很晚的APP,教你如何利用碎片时间偷偷变优秀,这8款优质app你可以拥有,实用且高颜值!1、我的桌面(iOS)手机高颜值主题桌面海量壁纸有趣的小组件。可以一键更……智慧矿山华为合作,2天2板,2天股价大涨40,还能进场吗?一、热门个股解读梅安森(300275)二、后市分析梅安森(300275)是一家主营煤矿安全生产检测监控设备及成套安全保障系统的高新技术企业。公司在监测监控与预警技术……挑战程序员同学,如何只用2GB内存从204080亿个整数中找一、用4字节表示的整数个数为23240亿,而用2字节表示的无符号整数个数为2166万。二、2G231B20亿字节。三、要找出出现次数最多的数,则应记录每个数出现的次……2022年,骁龙870天玑1200是否已经过时?骁龙870有些手机都还在用比如,红米K40S,realmeQ5Pro,小米12X。这两个处理器到现在依旧不过时我注重的是内存最好是1t的,价格2499,其他的不在意。……
库克急了!iPhone12持续降价,果粉幸福来得太突然商汤科技回应被美国实施投资限制科技发展不应该受地缘政治影响会SE否认被索尼收购市场猜测被传收购背后或可见多种合作可能最值得入手的五款12GB大内存旗舰机,最低仅售2499元为什么今年买手机不推荐128GB?听完老师傅的解读,可算明白华为儿童手表4X新耀款上线,支持微信多重定位,时刻守护儿童20212026年新能源基础设施建设行业深度分析及投资战略研中科飞测闯关科创板股东背后浮现华为中芯国际等巨头身影,报告期戴上助听器就可以和自己耳朵一样听声音了吗?为什么?进击的植物明星缺位备胎逆袭苹果手机的电池寿命剩下了77,怎么挑选质量好的电池?子墨购机指南,8月最值得入手的3款手机
这样都能念错大e了没有闪什么梗论社区护理现状及其发展对策关于美丽的菊花作文春节腊月三十民俗除夕贴门神贴春联守岁吃年夜饭压岁钱广州队官宣限薪一线队球员税前年薪不超60万,或启用足校小将自然景观单一的江苏,为什么5A景区全国第一,旅游收入全国第三健康饮水的好处传统食疗丨燕窝阿胶药酒,我本将心向明月,奈何明月照沟渠只有阻碍解救被绑架儿童罪才能立案?热评聚热点网 拿下读后感锦集租售同权武汉的规定是怎样的?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁