问题描述:

在2.5亿个整数中找出不重复的数,注意,内存不足以容纳2.5亿个整数。

分析解读:

方法一:分治法

采用hash的方法,把这2.5亿个数划分到更小的文件中,从而保证每个文件的大小不超过可用内存的大小。然后对于每个小文件而言,所有的数据可以一次性被加载到内存中,因此可以使用字典或set来找到每个小文件中不重复的数。当处理完所有的文件后就可以找出这2.5亿个整数中所有的不重复的数。

方法二:位图法

对于整数相关的算法的求解,位图法是一种非常实用的算法。如果可用的内存空间超过1GB就可以使用这种方法。具体思路:假设整数占用4B(如果占用8B,那么求解思路类似,只不过需要占用更大的内存),4B也就32位,可以表示的整数的个数为2^32.由于题目中只查找不重复的数,而不关心具体数字出现的次数,因此可以分别使用2bit来表示各个数字的状态:用00表示这个数字没有出现过,01表示出现过一次,10表示出现过多次,11暂不使用。

根据上面的逻辑,在遍历这2.5亿个整数的时候,如果这个整数对应的位图的位为00,那么修改为01,如果为01那么改为10,如果为10则保持不变。这样当所有数据遍历完成后,可以再遍历一遍位图,位图为01的数字就是没有重复的数字。

转载于:https://www.cnblogs.com/circleyuan/p/10350172.html

大数据面试题——如何在大量的数据中找出不重复的数相关推荐

  1. C语言即是素数又是回文数,急!(C语言)从给出的数据中找出既是回文数又是素数的数……...

    我是在vc环境写的. 输入输出用的是C++的iostream 你可以参考一下.要用就自己改下. #include #include #include #include #include struct ...

  2. 面试题:从n个数中找出第K大的数

    参考https://blog.csdn.net/orangefly0214/article/details/84997668的思路 从有n个元素的乱序数组中找出第k大的元素 方法1:基于冒泡排序和简单 ...

  3. 【面试现场】如何在10亿数中找出前1000大的数

    小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已经挂了两家,今天小史去了BAT中的最后一家面试了. 简单的 ...

  4. 如何在 10 亿数中找出前 1000 大的数?

    作者 | channingbreeze 责编 | 胡巍巍 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已 ...

  5. 堆排序及从10亿个数据中找出最小或最大的10个数

    高频面试题目 一.堆排序 1.基础知识 * ------基本知识: * 1. 堆数据结构特征: * 大顶堆:所有父节点大于等于左右子节点,arr[i] >= arr[2i+1] &&am ...

  6. 一道笔试题:从1亿个整数中找出最大的一万个

    今天看到一篇赖永浩大牛的博客,由一道笔试题目谈算法优化.http://blog.csdn.net/lanphaday/archive/2008/12/19/3547776.aspx. 题目原题是从10 ...

  7. 习题 9.5 建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

    C++程序设计(第三版) 谭浩强 习题9.5 个人设计 习题 9.5 建立一个对象数组,内放5个学生的数据(学号.成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成 ...

  8. PTA在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。

    在一大堆数据中找出重复的是一件经常要做的事情.现在,我们要处理许多整数,在这些整数中,可能存在重复的数据. 你要写一个程序来做这件事情,读入数据,检查是否有重复的数据.如果有,输出"YES& ...

  9. 大数据面试题——如何从大量数据中找出高频词

    问题描述: 有一个1GB大小的文件,文件里面每一行是一个词,每个词的大小不超过16B,内存大小限制为1MB,要求返回频数最高的100个词. 分析: 由于文件大小为1GB,而内存的大小只有1MB,因此不 ...

最新文章

  1. Joomla 2.5 中文语言包安装模板报错
  2. aspose.words 表格内容水平居中_CSS十五种方法教你如何居中一个元素
  3. Java 类中各成分加载顺序和内存中的存放位置
  4. 告诉你,我认识的上网的方式
  5. mac上面启用托盘放大效果的方法
  6. 紫书动规 例题9-10 UVA - 1626 Brackets sequence 区间dp
  7. 成为一名优秀的程序员基本要素
  8. 江西财经计算机应用杨教授,江西财经大学信息管理学院研究生导师介绍:刘德喜...
  9. PHP 技能精进之 PHP-FPM 多进程模型
  10. python如何输出两列数据_如何用python将一列数据分为两列?
  11. 《人民日报》专访姚期智院士:AI是历史性的起跑线机遇
  12. 信息学奥赛一本通 1961:【13NOIP普及组】计数问题 | 洛谷 P1980 [NOIP2013 普及组] 计数问题
  13. java-抽象类和接口对区别
  14. 【人工智能】计算机审美,学的怎么样了?
  15. 遇到一个打开文件方式“w+”和“a+”的问题
  16. Git 历史记录内容对比
  17. python气象绘图速成_气象数据可视化——利用Python绘制温度平流
  18. (二十二)美萍酒店管理系统:系统维护_系统设置_房间设置_其他测试
  19. 硬件管理 远程开机,网络开机
  20. kafka 消费机制

热门文章

  1. 怎么真正入行Web前端行业?JavaScript五大新特性是什么?
  2. 【web前端干货】JavaScript是什么?JavaScript有哪些特点?
  3. C语言常见基础错误大全总结
  4. 事态升级是什么意思_俗语“头不顶桑脚不踩槐;生不睡柳死不睡杨”啥意思 有道理吗...
  5. mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
  6. linux启动写入了mbr,一、Linux系统启动(MBR)
  7. 更改主机名后mysql无法启动_主机名变更导致MySql启动失败
  8. mysql ibtmp1 太大_mysql5.7 ibtmp1文件过大
  9. python之路 mysql 博客园_python之路--MySQL数据库初识
  10. 水晶报表如何查看sql_amazon自动广告如何查看报表?怎么知道亚马逊的自然流量和广告流量分别是多少?...