`

给出一个顺序文件,它最多包含40亿个随机排列的32位整数 问题:找出一个不在文件中的32位整数。

阅读更多

package com.myway.study;

import java.util.ArrayList;
import java.util.List;

/**
 * 给出一个顺序文件,它最多包含40亿个随机排列的32位整数

        问题:找出一个不在文件中的32位整数。
 * User: zhangyong
 * Date: 14-5-17
 * Time: 下午12:38
 * To change this template use File | Settings | File Templates.
 */
public class BinarySearchNoExist {

    public static Integer lostNum(int arr[], int len, int maxBits) {

        List lostNumList = new ArrayList();

        int lostNum = 0;

        int MASK = 0;

        int locZero = 0;

        int locOne = 0;

        int[] arrZero = new int[len];

        int[] arrOne = new int[len];

        for (int bit = maxBits - 1; bit >= 0; bit--) {

            locOne = 0;
            locZero = 0;

            MASK = 1 << bit;
            for (int i = 0; i < len; i++) {
                if ((arr[i] & MASK) == MASK) {
                    arrOne[locOne++] = arr[i];
                } else {
                    arrZero[locZero++] = arr[i];
                }
            }

            if ((locOne == MASK) && (locZero == MASK)) {

            } else {
                if (locOne > locZero) {
                    arr = arrZero;
                    len = locZero;
                } else {
                    lostNum += MASK;
                    arr = arrOne;
                    len = locOne;
                }
            }
        }

        return lostNum;
    }

    public static void main(String[] args) {
        int[] arr = {4, 2, 3, 5, 7, 10, 9, 11, 12, 14};
        System.out.println(lostNum(arr, arr.length, 4));
    }

}

分享到:
评论

相关推荐

    40亿个非负整数中找到未出现的数

    32位无符号整数的范围是0 ~ 4 294 967 295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有未出现过的数。怎么找到所有未出现过的数? 要求: 可以使用最多1GB的内存。 进阶: 内存限制10MB,...

    上海电机学院C语言实训答案

    (29)某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。...

    Huge Integer

    1. **数据结构设计**:为了表示大整数,我们可以创建一个动态数组,数组的每个元素代表一个数字位,通常从低位到高位排列。例如,如果数组长度为n,那么数组的元素可以表示从0到n-1位的数字。 2. **初始化和输入**...

    面试 大数据 算法解析

    1.提取出某日访问百度次数最多的那个IP 2.有一个1G大小的一个文件,里面每一行是...5.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? ......

    统计每个整数的出现次数

    - **循环生成随机数**:通过循环40次,每次生成一个0到99之间的随机整数(使用`Math.random()`方法),并将其存储在数组`array`中。 - **输出随机数**:在生成过程中,即时输出每个随机数。 ##### 2. 统计整数出现...

    大厂面试系列二.pdf

    在有内存限制的情况下找出10G个整数中的中位数问题,可以考虑使用“中位数的中位数”算法,该算法可以将复杂度降低到O(N)。 时分秒针在一天之内重合的次数,可以通过分析它们的运动规律计算得出。 将多个集合合并...

    数据结构_线性表的顺序表示与实现

    线性表是数据结构中最基础且重要的概念之一,它是由n(n≥0)个相同类型元素构成的有限序列。在线性表中,每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一个元素没有后继。在实际应用中,...

    文本文件单词的检索与计数

    要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 该设计要求...

    数学建模中整数规划问题

    ### 数学建模中整数规划问题 #### 一、整数规划的定义与分类 整数规划是在数学规划的基础上发展起来的一种优化方法,它的特殊之处在于决策变量必须是整数值。具体而言: 1. **定义**:在规划问题中,如果要求变量...

    两分钟内生成40亿以内的质数表的源代码 C语言

    标题中的“两分钟内生成40亿以内的质数表的源代码 C语言”指的是一个C语言编程项目,目标是快速地找出40亿(即2^32)以内的所有质数,并将它们存储在一个数据结构中,如数组或文件。这个程序的效率至关重要,因为它...

    40亿个非负整数中找到出现两次的数和所有数的中位数

    32位无符号整数的范围是0 ~ 4 294 967 295 现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数。 补充问题: 可以使用最多10MB的内存,怎么找到40亿个整数的中位数? 原问题: 可以用 bit map ...

    编写一个计算机程序用来计算一个文件的16位效验和

    在这个场景中,我们需要编写一个程序,该程序能够读取文件的内容,并计算出这些内容的16位校验和。 ### 二、关键步骤和技术要点 #### 1. 数据读取 在计算校验和之前,首先需要读取文件中的数据。这通常涉及到文件...

    输入一个整数,计算并输出该数的数字之和.java

    利用Java编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入一个整数:8899123各位数字之和为:40

    FAT32文件系统详解.pdf

    - **文件数量限制**:尽管提高了单个分区的大小,FAT32仍有一定的文件数量限制,即每个分区最多支持大约40亿个文件。 - **兼容性**:FAT32具有良好的跨平台兼容性,大多数现代操作系统都能够读写FAT32格式的存储介质...

    自来水管道铺设问题建模与计算/最优化问题

    自来水管道铺设问题是一个典型的组合最优化问题,它在城市规划、水资源管理以及基础设施建设等领域都有广泛的应用。在本问题中,我们需要解决的主要任务包括: 1. 利用给定的数据和条件,建立数学模型以确定管道的...

    算法分析与设计习题集答案

    12、 已知一个顺序表中的元素按元素值非递减有序排列,编写一个函数删除表中多余的值相同的元素。 13、 分别写出求二叉树结点总数及叶子总数的算法。 分治术 14、 有金币15枚,已知其中有一枚是假的,而且它的重量...

    数据库试题 经典 数据库试题 经典

    **解析:** 对于一个5位寄存器,它可以表示的最大二进制数为11111,转换为十进制数为31。因此,正确答案是C: 31。 **16. 如果一个元素的哈希地址是Hash,那么删除该元素时需要比较的下一个元素的哈希地址是?** - A:...

    《剑指Offer》题目及代码.pdf

    66. 矩阵中的路径:需要在矩阵中找出一条包含指定字符的路径,路径上的字符可以相连但不能重复。 67. 机器人的运动范围:给定一个m*n的格子,机器人从(0,0)开始移动,每次可以上下左右移动一格,不能进入包含有重复...

    32位纯RGB图片数据添加BMP文件头程序

    在IT领域,图像处理是重要的一环,而BMP(Bitmap)格式是Windows操作系统中广泛使用的未经压缩的图像文件格式。本程序的核心是为32位纯RGB图片数据添加BMP文件头,使得数据能够被系统正确识别为BMP文件。在理解这个...

Global site tag (gtag.js) - Google Analytics