- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据分析师常见的10道面试题精选--第1页
数据分析师常见的10道面试题(2)
然后将这40亿个数分成两类:
1.最高位为0
2.最高位为1
并将这两类分别写入到两个文件中,其中一个文件中数的个数
=20亿,而另一个=20亿(这相当于折半了);
与要查找的数的最高位比较并接着进入相应的文件再查找
再然后把这个文件为又分成两类:
1.次最高位为0
2.次最高位为1
并将这两类分别写入到两个文件中,其中一个文件中数的个数
=10亿,而另一个=10亿(这相当于折半了);
与要查找的数的次最高位比较并接着进入相应的文件再查找。
…….
以此类推,就可以找到了,而且时间复杂度为O(logn),方案2完。
附:这里,再简单介绍下,位图方法:
使用位图法判断整形数组是否存在重复
判断集合中存在重复是常见编程任务之一,当集合中数据量比较
大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。
位图法比较适合于这种情况,它的做法是按照集合中最大元素
max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到
几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,
这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这
说明这次的数据肯定和以前的数据存在着重复。这种给新数组初始化
时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算
次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长
的话效率还能提高一倍。
欢迎,有更好的思路,或方法,共同交流。
8、怎么在海量数据中找出重复次数最多的一个?
数据分析师常见的10道面试题精选--第1页
数据分析师常见的10道面试题精选--第2页
方案1:先做hash,然后求模映射为小文件,求出每个小文件中
重复次数最多的一个,并记录重复次数。然后找出上一步求出的数据
中重复次数最多的一个就是所求(具体参考前面的题)。
9、上千万或上亿数据(有重复),统计其中出现次数最多的钱N个
数据。
方案1:上千万或上亿的数据,现在的机器的内存应该能存下。所
以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数。然后
就是取出前N个出现次数最多的数据了,可以用第2题提到的堆机制
完成。
10、一个文本文件,大约有一万行,每行一个词,要求统计出其
中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
方案1:这题是考虑时间效率。用trie树统计每个词出现的次数,
时间复杂度是O(n*le)(le表示单词的平准长度)。然后是找出出现最频
繁的前10个词,可以用堆来实现,前面的题中已经讲到了,时间复杂
度是O(n*lg10)。所以总的时间复杂度,是O(n*le)与O(n*lg10)中较
大的哪一个。
附、100w个数中找出最大的100个数。
方案1:在前面的题中,我们已经提到了,用一个含100个元素
的最小堆完成。复杂度为O(100w*lg100)。
方案2:采用快速排序的思想,每次分割之后只考虑比轴大的一部
分,知道比轴大的一部分在比100多的时候,采用传统排序算法排序,
取前100个。复杂度为O(100w*100)。
文档评论(0)