安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

腾讯三面40亿个QQ号码如何去重?

12月20日 顾昀汐投稿
  今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:
  文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G。
  这个题目的意思应该很清楚了,比较直白。为了便于大家理解,我来画个动图玩玩,希望大家喜欢。
  能否做对这道题目,很大程度上就决定了能否拿下腾讯的offer,有一定的技巧性,一起来看下吧。
  在原题中,实际有40亿个QQ号码,为了方便起见,在图解和叙述时,仅以4个QQ为例来说明。
  方法一:排序
  很自然地,最简单的方式是对所有的QQ号码进行排序,重复的QQ号码必然相邻,保留第一个,去掉后面重复的就行。
  原始的QQ号为:
  排序后的QQ号为:
  去重就简单了:
  可是,面试官要问你,去重一定要排序吗?显然,排序的时间复杂度太高了,无法通过腾讯面试。
  方法二:hashmap
  既然直接排序的时间复杂度太高,那就用hashmap吧,具体思路是把QQ号码记录到hashmap中:mapFlag〔123〕truemapFlag〔567〕truemapFlag〔123〕truemapFlag〔890〕true
  由于hashmap的去重性质,可知实际自动变成了:mapFlag〔123〕truemapFlag〔567〕truemapFlag〔890〕true
  很显然,只有123,567,890存在,所以这也就是去重后的结果。
  可是,面试官又要问你了:实际要存40亿QQ号码,1G的内存够分配这么多空间吗?显然不行,无法通过腾讯面试。
  方法三:文件切割
  显然,这是海量数据问题。看过很多面经的求职者,自然想到文件切割的方式,避免内存过大。
  可是,绞尽脑汁思考,要么使用文件间的归并排序,要么使用桶排序,反正最终是能排序的。
  既然排序好了,那就能实现去重了,貌似就万事大吉了。我只能坦白地说,高兴得有点早哦。
  接着,面试官又要问你:这么多的文件操作,效率自然不高啊。显然,无法通过腾讯面试。
  方法四:bitmap
  来看绝招!我们可以对hashmap进行优化,采用bitmap这种数据结构,可以顺利地同时解决时间问题和空间问题。
  在很多实际项目中,bitmap经常用到。我看了不少组件的源码,发现很多地方都有bitmap实现,bitmap图解如下:
  这是一个unsignedchar类型,可以看到,共有8位,取值范围是〔0,255〕,如上这个unsignedchar的值是255,它能标识07这些数字都存在。
  同理,如下这个unsignedchar类型的值是254,它对应的含义是:17这些数字存在,而数字0不存在:
  由此可见,一个unsignedchar类型的数据,可以标识07这8个整数的存在与否。以此类推:一个unsignedint类型数据可以标识031这32个整数的存在与否。两个unsignedint类型数据可以标识063这64个整数的存在与否。
  显然,可以推导出来:512MB大小足够标识所有QQ号码的存在与否,请注意:QQ号码的理论最大值为2321,大概是43亿左右。
  接下来的问题就很简单了:用512MB的unsignedint数组来记录文件中QQ号码的存在与否,形成一个bitmap,比如:bitmapFlag〔123〕1bitmapFlag〔567〕1bitmapFlag〔123〕1bitmapFlag〔890〕1
  实际上就是:bitmapFlag〔123〕1bitmapFlag〔567〕1bitmapFlag〔890〕1
  然后从小到大遍历所有正整数(4字节),当bitmapFlag值为1时,就表明该数是存在的。
  而且,从上面的过程可以看到,自动实现了去重。显然,这种方式可以通过腾讯的面试。
  扩展练习一
  文件中有40亿个互不相同的QQ号码,请设计算法对QQ号码进行排序,内存限制1G。
  很显然,直接用bitmap,标记这40亿个QQ号码的存在性,然后从小到大遍历正整数,当bitmapFlag的值为1时,就输出该值,输出后的正整数序列就是排序后的结果。
  请注意,这里必须限制40亿个QQ号码互不相同。通过bitmap记录,客观上就自动完成了排序功能。
  扩展练习二
  文件中有40亿个互不相同的QQ号码,求这些QQ号码的中位数,内存限制1G。
  我知道,一些刷题经验丰富的人,最开始想到的肯定是用堆或者文件切割,这明显是犯了本本主义错误。直接用bitmap排序,当场搞定中位数。
  扩展练习三
  文件中有40亿个互不相同的QQ号码,求这些QQ号码的topK,内存限制1G。
  我知道,很多人背诵过topK问题,信心满满,想到用小顶堆或者文件切割,这明显又是犯了本本主义错误。直接用bitmap排序,当场搞定topK问题。
  扩展练习四
  文件中有80亿个QQ号码,试判断其中是否存在相同的QQ号码,内存限制1G。
  我知道,一些吸取了经验教训的人肯定说,直接bitmap啊。然而,又一次错了。根据容斥原理可知:
  因为QQ号码的个数是43亿左右(理论值2321),所以80亿个QQ号码必然存在相同的QQ号码。
  海量数据的问题,要具体问题具体分析,不要眉毛胡子一把抓。有些人完全不刷题,肯定不行。有些人刷题后不加思考,不会变通,也是不行的。好了,先说这么多。我们也会一步一个脚印,争取每篇文章讲清讲透一件事,也希望大家阅读后有所收获,心情愉快。
投诉 评论

王者荣耀王者新赛季上分英雄推荐中路法师上推荐两位英雄高渐离和王昭君,新出的装备破茧之衣非常适合高渐离,破茧之衣是可以带来最高15的免伤,加上高渐离大招是可以达到最高40减伤的,冲进人群里开个狂暴就是一名真正……错!错!错!别再这样给手机充电了当下的生活里,手机不仅是通讯工具,在工作、休闲、社交中也发挥着越来越重要的作用。在使用手机的过程中,最让人焦虑的就是手机的低电量提醒。LG在2016年做了一项调查,结果显……中国女篮是怎么练的,怎么就这么厉害?中国女篮连战连捷,终于如预料之中一般,在击败比利时之后顺利拿到小组前两名,从而在八强抽签中占据了先手优势。根据本届世界杯规则,同组前两名在半决赛不会相遇,两个小组头名在半……丙涛绝杀,安达不敌墨菲,两小将双折翅,中国军团32强赛名单出欧洲大师赛如火如荼,截至北京时间8月17日24时,中国军团4场32强争夺赛结束,结果1胜3负,具体出场对阵结果为:颜丙涛,对阵小将艾默里,后者此前在欧洲大师赛和英国公开赛……喇叭裤怎么穿更时髦?教你3条穿搭思路,实用干货,值得学习春季,有这么一款单品的出场率正在随着气温的升高而变高,它就是复古时髦的喇叭裤。喇叭裤是港风穿搭和法式穿搭中,不可或缺的一款下装。那么,我们到底该如何穿出喇叭裤的时髦感与气……黄河边上的古镇,名气小却敢和周庄比美!以前很辉煌,现在很神秘在国人心中,古镇总是江南的好。周庄、乌镇、西塘、南浔一个个犹如大家闺秀般温润可人,撩得人心痒痒,总想着去一探究竟。而在甘肃,有这么一座古镇,虽不像江南那般极尽水乡之……剧本杀渡鸦诡局2骑马与砍杀复盘解析剧透结局凶手是谁真相剧本类型:城限、欧式、阵营、机制玩家人数:4男3女游戏时长:4h推荐人群推荐场次:建议有十场及以上打本经验适合:机制玩家、阵营玩家不适合:菠……腾讯三面40亿个QQ号码如何去重?今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限……北京菖蒲河公园北京菖蒲河公园菖蒲河,又名故宫外金水河,因河中生长菖蒲而得名。在此基础上建设的公园叫:北京菖蒲河公园,位于天安门东侧。菖蒲河是明清皇城的一部分,也是树皇城水系的重要……良心推荐!游戏玩家换新机认准小米iQOO一加这三款骁龙8旗舰随着技术的不断创新和发展,游戏制作的日益精良,游戏中的画面更加细腻精美,视觉效果也更加震撼,使得当下手游的体验度不断拉升。不过要想要玩得畅快,自然也少不一台性能表现出色的手机。……布鲁克林贝克汉姆身上有100个纹身,而七分之一是献给妻子的据英国媒体镜报报道,5个月前,英国著名球星贝克汉姆的长子布鲁克林贝克汉姆和妻子尼古拉佩尔茨在棕榈滩举行了一场奢华的婚礼。这对新婚夫妇急切地渴望向公众展示他们之间坚不可摧的爱情。……新赛季开启前恐离队的三大球星,杜兰特心意已决,戴维斯朝不保夕随着自由市场持续发酵,各支球队当家球星的交易也是此起彼伏,在物欲横流的商业联盟,交易早已成为司空见惯的常态,无论是球星意愿亦或者球队利益的驱使,球星的去留早已成为司空见惯的常态……
自驾豳州礼佛养乐多中国涨价!一款饮料卖59年光环不再,乳酸菌大王着急了?一文详解缓存策略一场能源危机,激活全球万亿核电市场艺术与科技的再次完美结合,华为发布HUAWEIWATCHGT42岁熊黛林跟老公逛商场,全程挽手太恩爱,个子高挑身材火辣福启新岁,万事顺遂天才中锋彻底水掉,曾凡博又被弃用,解立彬险翻船,方硕单骑救主我国出境游逐步恢复,预计今年五一或暑期迎高峰北京取消新十条外核酸查验要求股票市场是零和博弈,当所有股票都下跌的时候大家亏的钱都去哪了在世界杯上踢进一颗球,能值多少钱呢?一条造句用一条造句大全北京养老金最新政策南昆山居首批五星级温泉,春节来看杂技赏烟花体验特色亲子房国务院关于落实政府工作报告重点工作分工的意见雨中的一抹绿科普面对面高考学子,这份用药贴士请查收数字化工厂建设内容分析与实践女人心真的搞不懂,莫名又被结婚四年的老婆冷战准妈妈不宜戴隐形眼镜高校预算管理现状及优化对策论文天津住房限购政策不会改变无论,也造句用无论,也造句大全

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利