zoukankan      html  css  js  c++  java
  • 面试问题2:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字

    问题描述:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字

      大数据操作:

      解决方法一:

      依次遍历文件数据,
      开始32二进制清0
      每次读取一个数,先和二进制位与,如果为0 则没有,再把数字与二进制数位或。如果为1,则输出这个数
      直到读取文件最后一个数字

    举例说明:

    0000 0000 0000 0000 0000 0000 0000 0000 开始的二进制位 倘若第一个数为2 那么
    0000 0000 0000 0000 0000 0000 0000 0010  开始位与 结果不为2, 则二进制里面没有2 这个数字,然后用二进制与当前数字或运算结果为
    0000 0000 0000 0000 0000 0000 0000 0010  再次读取一个数字 如果为 3 则开始先和新的二进制数位与
    0000 0000 0000 0000 0000 0000 0000 0011 位与结果为 0000 0000 0000 0000 0000 0000 0000 0010 结果不是3 则在和二进制位与那么现在的二进制数为:
    0000 0000 0000 0000 0000 0000 0000 0011  在读取 一个数字 如果为8 和二进制数为与
    0000 0000 0000 0000 0000 0000 0000 1000 结果为0,不等于,说明没有8,则再次为或
    0000 0000 0000 0000 0000 0000 0000 1011 新的二进制数,在读取一个数字,如果为8 
    0000 0000 0000 0000 0000 0000 0000 1000 位与,等于........1000  位与结果为8 那么8 就是出现2次的那个数字,
    一下同理读取文件数据,直到文件结束。

  • 相关阅读:
    angular $apply()以及$digest()讲解1
    AngularJs + Bootstrap
    angular service讲解
    末班方法代码实战和总结
    JS基础学习1——什么是基础js类和原型?
    背景图片background-size兼容ie8以下浏览器解决
    magento2 客户端模式less样式修改。
    git贡献代码流程
    React模板
    获取iframe src中参数
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5330176.html
Copyright © 2011-2022 走看看