首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何判断一个数是否 40 亿个整数

今天他就去BAT的一家面试了。 简单的自我介绍后,面试官给了小史一个问题。 【面试现场】 ? ? 题目:我有40亿个整数,再给一个新的整数,我需要判断新的整数是否40亿个整数,你会怎么做? ?...小史:哦,对哦,这样我就申请40亿个位就好了,新的数转换成一个位,然后判断一下这个位是0还是1就行了。 吕老师:小史啊,考虑问题要考虑清楚啊,如果是40亿个位,那么这40亿个位哪些是0,哪些是1呢?...来了一个新的数,怎么判断是否40亿个位之中? ? 小史:我想想,对啊,40亿个位,40亿个数,那么每个位都是1,这。。。...小史:意思是我把整个整数范围都覆盖了,哦,对哦。这样一来,就可以做了,1代表第一个位,2代表第二个位,2的32次方代表最后一个位。40亿个数,存在的数就在相应的位置1,其他位就是0。 ?...首先,32位int的范围是42亿,40亿整数中肯定有一些是连续的,我们可以先对数据进行一个外部排序,然后用一个初始的数和一个长度构成一个数据结构,来表示一段连续的数,举个例子。

84070

【面试现场】如何判断一个数是否40亿个整数

小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT。 ? 今天他就去BAT的一家面试了。 简单的自我介绍后,面试官给了小史一个问题。...题目:我有40亿个整数,再给一个新的整数,我需要判断新的整数是否40亿个整数,你会怎么做? ? ? ? ? ? ? ? ? ? ? ?...来了一个新的数,怎么判断是否40亿个位之中? ? 小史:我想想,对啊,40亿个位,40亿个数,那么每个位都是1,这。。。...小史:意思是我把整个整数范围都覆盖了,哦,对哦。这样一来,就可以做了,1代表第一个位,2代表第二个位,2的32次方代表最后一个位。40亿个数,存在的数就在相应的位置1,其他位就是0。 ?...首先,32位int的范围是42亿,40亿整数中肯定有一些是连续的,我们可以先对数据进行一个外部排序,然后用一个初始的数和一个长度构成一个数据结构,来表示一段连续的数,举个例子。

65260
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TS 如何实现类型保护?类型谓词了解一下

    一、联合类型 TypeScript 一个变量不会被限制为单一的类型。如果你希望一个变量的值,可以有多种类型,那么就可以使用 TypeScript 提供的联合类型。...换句话说,类型保护可以保证一个字符串是一个字符串,尽管它的值也可以是一个数值。类型保护与特性检测并不是完全不同,其主要思想是尝试检测属性、方法或原型,以确定如何处理值。...== undefined; } 你可以传递任何值给 isCar 函数,用来判断是不是一辆车。... isCar 函数的方法体,我们不仅要检查 vehicle 变量是否含有 turnSteeringWheel 属性,而且还要告诉 TS 编译器,如果上述逻辑语句的返回结果是 true,那么当前判断的...== undefined; } 以上代码,我们定义了一个通用的类型保护函数,你可以需要的时候使用它来缩窄类型

    3.6K11

    C++11模版元编程:如何判断一个类型是完整类型(complete type)

    简单说,如果在编译期编译器能计算出一个类型的size,那么它就是一个完整类型,否则就是不完整类型。...比如如下的向前声明,编译器遇到它时,并无法判断student这个类型有占用多大的空间,所以它就是一个不完整类型: struct student *ps; 当编译器遇到student的定义时它就成了一个完整类型...,那么C++11如何判断 一个类型是完整类型呢?...只要对一个类型sizeof(T)能正确计算,这个T就是一个完整类型。...所以判断T是否为完整类型的模板函数就可以写成如下的样子: // 根据SFINAE原则,sizeof(T)不能正确计算就进入此分支,value为false; template <typename T, typename

    1.5K30

    判断一个数是否40亿个整数

    最近看到一道经典面试题: 40亿的unsigned int数据(乱序),给定一个数字target, 判断该target是否存在于这40亿的数据?...准备工作: 如下代码随机生成[1, 2147483648)的整数集保存在D盘根目录下a.txt,生成数据(一行一个整数)之后(约占磁盘40G),用代码再统计一下生成的数字有3999999040(嗯?...计算机,bitmap是用作某个值(例如: 给定范围的整数),映射为位(bit), 也被叫做位数组或位图)。...举个例子: 给定一个long类型的数组,向其中如下的一些数据,以下是具体的位图展示 long类型是8Byte = 8 * 8 = 64bit, 让每一个位代表一个值,假设这批数字的最大值max = 40...亿, 这样我们可以开辟一个 (400000000 / 64 + 1)空间的大小, 数组一个long类型的值是64bit, 实际代表了64个long值: a[0]: 0~63 a[1]: 64~127

    1.3K40

    mysql如何修改字段类型_MySQL怎么修改字段类型?「建议收藏」

    MySQL,可以通过alter table语句来修改表中一个字段的数据类型。下面本篇文章就来带大家了解一下alter table语句,介绍如何修改字段类型,希望对大家有所帮助。...MySQL,alter table语句是用于已有的表添加、修改或删除列(字段)的。...1、添加字段(列)alter table 表名 add 字段名 数据类型 示例:表 “Persons” 添加一个名为 “Birthday” 的新列,数据类型为“date”alter table Persons...add Birthday date 说明:新列 “Birthday” 的类型是 date,可以存放日期 2、修改字段名alter table 表名 rename column A to B 3、修改字段类型...alter table 表名 alter column 字段名 数据类型 示例:将表 “Persons” 的 “Birthday” 列的数据类型改为“year”alter table Persons

    27.8K20

    一日一技:如何判断某个汉字是不是字体库

    如下图所示为方正静蕾简体,没有“龍鑨”两个汉字: 现在,我手上有10000个汉字,我如何快速确定哪些汉字在这个字体库呢?...为了解决这个问题,我们需要安装 Python 的一个第三方库:fontTools 首先我们来安装它: python3 -m pip install fonttools 然后,我们编写代码,读取字体库的所有字体...TTFont('方正静蕾体.ttf') unicode_map = font['cmap'].tables[0].ttFont.getBestCmap() 这段代码获取的 unicode_map是一个字典...所以,如果我们要检查某个汉字在不在这个字体库,只需要检查汉字的 unicode 码在不在unicode_map即可: words = '一二龍三四' for word in words: if...但是有一些字体,他们明明没有某个汉字,却非要把这个汉字的 unicode 码添加到 unicode_map,所以我们还可以再进一步检验: glyf_map = font['glyf'] if len(

    3.3K30

    C++核心准则​NL.5:避免名称包含类型信息

    NL.5: Avoid encoding type information in names NL.5:避免名称包含类型信息 Rationale(基本原理) If names reflect...languages, but is generally unnecessary and actively harmful in a strongly statically-typed language like C+...类型化语言中已经使用了像匈牙利命名方法这样的技术变量名包含类型,但是像C ++这样的强静态类型化语言中,这通常是不必要的甚至是有害的,因为注释已经过时了(注释就像疣一样,也会像它们一样腐烂),...这是无害的,不受该准则约束,因为它没有表达类型信息。 Note(注意) Like C++, some styles distinguish types from non-types....像C ++一样,某些风格将类型与非类型区分开。例如,通过大写类型名称,而不是函数和变量的名称。

    73020

    java判断字符串是否是数字,Java如何判断一个字符串是不是一个数字

    当你需要在 Java 判断一个字符串是否是数字时,有多种方法可供选择。让我们来记录这两种常见的方法。...");} else { System.out.println(str + " 包含非数字字符");}在上述代码,我们使用 for 循环遍历字符串的每个字符,并使用 Character.isDigit...如果发现任何一个非数字字符,我们将 isDigit 设置为 false 并跳出循环。最后,根据 isDigit 的值输出相应的结果。...commons-lang3 3.12.0引入依赖后,我们可以直接调用 StringUtils.isNumeric() 方法来判断字符串是否是数字...");} else { System.out.println(str + " 包含非数字字符");}在上述代码,我们使用 StringUtils.isNumeric() 方法直接判断字符串是否由数字字符组成

    78210

    JS篇(020)-如何判断 JS 变量的一个类型(至少三种方式)

    答案:typeof、instanceof、 constructor、 prototype 解析: 1、typeof typeof 返回一个表示数据类型的字符串,返回结果包括:number、boolean...如果是判断一个基本的类型用typeof就是可以的。...function 有效 typeof new Date(); //object 无效 typeof new RegExp(); //object 无效 2、instanceof instanceof 是用来判断...JS 内置了一些构造函数:Object、Array、Function、Date、RegExp、String等。我们可以通过数据的 constrcutor 是否与其构造函数相等来判断数据的类型。...,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object, xxx], xxx是具体的数据类型,其中包括:String, Number

    1.2K10

    如何判断一个元素亿级数据是否存在?

    前言 最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。 需求其实很清晰,只是要判断一个数据是否存在即可。...实际情况也是如此;既然要判断一个数据是否存在于集合,考虑的算法的效率以及准确性肯定是要把数据全部 load 到内存的。...Bloom Filter 基于上面分析的条件,要实现这个需求最需要解决的是 如何将庞大的数据load到内存。...它主要就是用于解决判断一个元素是否一个集合,但它的优势是只需要占用很小的内存空间以及有着高效的查询效率。 所以在这个场景下在合适不过了。... set 之前先通过 get() 判断这个数据是否存在于集合,如果已经存在则直接返回告知客户端写入失败。 接下来就是通过位运算进行 位或赋值。

    1.3K20

    如何判断一个元素亿级数据是否存在?

    前言 最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。 需求其实很清晰,只是要判断一个数据是否存在即可。...实际情况也是如此;既然要判断一个数据是否存在于集合,考虑的算法的效率以及准确性肯定是要把数据全部 load 到内存的。...Bloom Filter 基于上面分析的条件,要实现这个需求最需要解决的是 如何将庞大的数据load到内存。...它主要就是用于解决判断一个元素是否一个集合,但它的优势是只需要占用很小的内存空间以及有着高效的查询效率。 所以在这个场景下在合适不过了。... set 之前先通过 get() 判断这个数据是否存在于集合,如果已经存在则直接返回告知客户端写入失败。 接下来就是通过位运算进行 位或赋值。

    1.3K30

    如何判断一个元素亿级数据是否存在?

    前言 最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。 需求其实很清晰,只是要判断一个数据是否存在即可。...实际情况也是如此;既然要判断一个数据是否存在于集合,考虑的算法的效率以及准确性肯定是要把数据全部 load 到内存的。...Bloom Filter 基于上面分析的条件,要实现这个需求最需要解决的是 如何将庞大的数据load到内存。...它主要就是用于解决判断一个元素是否一个集合,但它的优势是只需要占用很小的内存空间以及有着高效的查询效率。 所以在这个场景下在合适不过了。... set 之前先通过 get() 判断这个数据是否存在于集合,如果已经存在则直接返回告知客户端写入失败。 接下来就是通过位运算进行 位或赋值。

    1.5K20
    领券