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));
}
}
分享到:
相关推荐
32位无符号整数的范围是0 ~ 4 294 967 295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有未出现过的数。怎么找到所有未出现过的数? 要求: 可以使用最多1GB的内存。 进阶: 内存限制10MB,...
(29)某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。...
1. **数据结构设计**:为了表示大整数,我们可以创建一个动态数组,数组的每个元素代表一个数字位,通常从低位到高位排列。例如,如果数组长度为n,那么数组的元素可以表示从0到n-1位的数字。 2. **初始化和输入**...
1.提取出某日访问百度次数最多的那个IP 2.有一个1G大小的一个文件,里面每一行是...5.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? ......
- **循环生成随机数**:通过循环40次,每次生成一个0到99之间的随机整数(使用`Math.random()`方法),并将其存储在数组`array`中。 - **输出随机数**:在生成过程中,即时输出每个随机数。 ##### 2. 统计整数出现...
在有内存限制的情况下找出10G个整数中的中位数问题,可以考虑使用“中位数的中位数”算法,该算法可以将复杂度降低到O(N)。 时分秒针在一天之内重合的次数,可以通过分析它们的运动规律计算得出。 将多个集合合并...
线性表是数据结构中最基础且重要的概念之一,它是由n(n≥0)个相同类型元素构成的有限序列。在线性表中,每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一个元素没有后继。在实际应用中,...
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 该设计要求...
### 数学建模中整数规划问题 #### 一、整数规划的定义与分类 整数规划是在数学规划的基础上发展起来的一种优化方法,它的特殊之处在于决策变量必须是整数值。具体而言: 1. **定义**:在规划问题中,如果要求变量...
标题中的“两分钟内生成40亿以内的质数表的源代码 C语言”指的是一个C语言编程项目,目标是快速地找出40亿(即2^32)以内的所有质数,并将它们存储在一个数据结构中,如数组或文件。这个程序的效率至关重要,因为它...
32位无符号整数的范围是0 ~ 4 294 967 295 现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数。 补充问题: 可以使用最多10MB的内存,怎么找到40亿个整数的中位数? 原问题: 可以用 bit map ...
在这个场景中,我们需要编写一个程序,该程序能够读取文件的内容,并计算出这些内容的16位校验和。 ### 二、关键步骤和技术要点 #### 1. 数据读取 在计算校验和之前,首先需要读取文件中的数据。这通常涉及到文件...
-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分...
利用Java编写程序从键盘输入一个整数,计算并输出该数的数字之和。例如:请输入一个整数:8899123各位数字之和为:40
- **文件数量限制**:尽管提高了单个分区的大小,FAT32仍有一定的文件数量限制,即每个分区最多支持大约40亿个文件。 - **兼容性**:FAT32具有良好的跨平台兼容性,大多数现代操作系统都能够读写FAT32格式的存储介质...
自来水管道铺设问题是一个典型的组合最优化问题,它在城市规划、水资源管理以及基础设施建设等领域都有广泛的应用。在本问题中,我们需要解决的主要任务包括: 1. 利用给定的数据和条件,建立数学模型以确定管道的...
12、 已知一个顺序表中的元素按元素值非递减有序排列,编写一个函数删除表中多余的值相同的元素。 13、 分别写出求二叉树结点总数及叶子总数的算法。 分治术 14、 有金币15枚,已知其中有一枚是假的,而且它的重量...
**解析:** 对于一个5位寄存器,它可以表示的最大二进制数为11111,转换为十进制数为31。因此,正确答案是C: 31。 **16. 如果一个元素的哈希地址是Hash,那么删除该元素时需要比较的下一个元素的哈希地址是?** - A:...
66. 矩阵中的路径:需要在矩阵中找出一条包含指定字符的路径,路径上的字符可以相连但不能重复。 67. 机器人的运动范围:给定一个m*n的格子,机器人从(0,0)开始移动,每次可以上下左右移动一格,不能进入包含有重复...
在IT领域,图像处理是重要的一环,而BMP(Bitmap)格式是Windows操作系统中广泛使用的未经压缩的图像文件格式。本程序的核心是为32位纯RGB图片数据添加BMP文件头,使得数据能够被系统正确识别为BMP文件。在理解这个...