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

脑洞:如何用一个整数来表示一个列表?

[注1] 、[注2] 这意味着,一个整数可以存储无限大的值,只要内存足够。...另一方面,相比于其它用 int 编码的列表,那些包含非常多小整数的长列表,尤其是大型稀疏列表(即大部分的值都为 0),则拥有非常紧凑的表示形式。...另请参见《 The Genuine Sieve of Erathosthenes》论文,它澄清了这一算法是如何被定义的。 Python猫注: 以上是全部译文,但我最后还想补充一个有趣的内容。...在《黑客与画家》中,保罗·格雷大师有一个惊人的预言,他认为在逻辑上不需要有整数类型,因为整数 n 可以用一个 n 元素的列表来表示。哈哈,这跟上文的脑洞恰好反过来了!...想象一下,一个只有整数类型没有列表的编程语言,以及一个只有列表类型没有整数的编程语言,哪一个更有可能在未来出现呢?

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

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

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

    85870

    如何从40亿个整数中找到不存在的一个

    前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数。(在文件中至少确实一个这样的数-为什么?)。在具有足够内存的情况下,如何解决该问题?...如果有几个外部的“临时”文件可用,但是仅有几百字节的内存,又该如何解决该问题? 分析 这仍然是《编程珠玑》中的一个问题。...前面我们曾经提到过《如何对1千万个整数进行快速排序》,我们使用位图法解决了这个问题。32位整型最多有4294967296个整数,而很显然40亿个数中必然会至少缺一个。...一个整数有32位,我们按照每个比特位是0还是1,将要查找的数据范围一分为二。...每一次选择,都记录选择的是0还是1,最多32次选择后,便可以至少找到一个整数,不存在这40亿数中。 实例说明 由于32位的整型数据量太多,不便说明,我们用一个4比特的数据对上面的思路再做一个说明。

    1.5K20

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

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

    66360

    简单说 JavaScript实现雪花飘落效果

    它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。...setInterval() setInterval函数的用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行。...clearTimeout(),clearInterval() setTimeout和setInterval函数,都返回一个表示计数器编号的整数值,将该整数传入clearTimeout和clearInterval...主要是以下4步: 1、定义一片雪花模板; 2、设置第一个定时器,周期性定时器,每隔一段时间生成一片雪花; 3、设置第二个定时器,一次性定时器,当第一个定时器生成雪花,并在页面上渲染出来后,修改雪花的样式...,周期性定时器,每隔一段时间(millisec)生成一片雪花; setInterval(function() { //页面加载之后,定时器就开始工作

    2.1K50

    一个很大的文件,存放了10G个整数的乱序数列,如何用程序找出中位数。

    一、梳理审题 一、看清题目: 注意这个题目的量词,这个文件中有10G个整数,而不是这个文件占了10G的内存空间。...所以这个题目我认为出的不严谨,因为10G个,”个“字作为一个量词,前面应该是个单纯的数字,但是这里却说的是10G,存储容量?...10G=10*1024*1024*1024,1024=2^10 10G=10*2^30=5*2^31 第一步:在计算机中如何表示10G个这个数字?...即第一个桶放0-15的数,而16-31则放在第二个桶里面...以此类推 第四步:第一次遍历 然后我们开始遍历,将10G个数中的每一个数都放到对应的桶里面,如当前读到数字为18则放到第二个桶里面,第二个桶中所含有的数字总个数...这里有一个极端情况,就是所有10G个数都落在同一个桶里面,那么在第二次遍历的时候就需要对全部10G个数进行遍历。

    41010

    js防抖和节流实现

    2.节流(throttle):高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率 举例:预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。...区别:防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。 4....防抖应用场景 登录、发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖 调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防抖 文本编辑器实时保存,当无任何更改操作一秒后进行保存...节流应用场景 scroll 事件,每隔一秒计算一次位置信息等 浏览器播放事件,每个一秒计算一次进度信息等 input 框实时搜索并发送请求展示下拉列表,每隔一秒发送一次请求 (也可做防抖) <!...,如果触发了新事件,则重新开始计算时间 // 节流:每隔一段时间执行一次,如果两次事件开始时间大于限定时间间隔,则可以再次执行 // 二者都使用闭包实现,

    60920

    mysql 数据库 定时自动备份

    # -mtime +30 按照文件的更改时间来查找文件,+30表示文件更改时间距现在30天以前;如果是 -mmin +7 表示文件更改时间距现在7分钟以前。...# -exec rm -rf {} \; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号。...hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。...逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率...init.d/smb restart 实例8:每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart 实例9:每天18 : 00至23 : 00之间每隔

    4.3K10

    创建一个具有背景轮播和3D卡片翻转效果的个人名片网页

    点击下面链接(第一次打开可能会有些慢) 点击进入个人名片(手机版) 图片展示 前言 在本篇博客中,我们将学习如何创建一个具有多个功能的个人名片网页。...项目目标 在开始之前,我们先明确一下这个项目的主要目标: 创建一个响应式的网页,可以适应不同屏幕大小。 实现一个背景图像轮播效果,每隔一段时间切换一张背景图。...实现一个背景图像轮播效果,每隔一段时间切换一张背景图。 使用CSS 3D变换来创建一个具有多个面的卡片效果。...背景图轮播的逻辑 背景图像轮播是一种常见的网页效果,通过定时更改background-image属性来实现。每隔一段时间,我们更改背景图像的URL,从而创造出图像轮播的效果。....is_top { transform: rotateX(90deg) translateZ(100px); } 结语 通过这个项目,我们学习了如何创建一个具有背景轮播和3D卡片翻转效果的个人名片网页

    18110

    三十六:Redis过期键删除策略

    redisDb结构的expires字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典: ❑过期字典的键是一个指针,这个指针指向键空间中的某个键对象(也即是某个数据库键)。...❑过期字典的值是一个long long类型的整数,这个整数保存了键所指向的数据库键的过期时间——一个毫秒精度的UNIX时间戳。...❑定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。...❑定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。...定期删除策略是前两种策略的一种整合和折中: ❑定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。

    39330

    SAP QM 物料的周期性检验

    物料的周期性检验指每隔一段时间,将存放在仓库的东西拿出来瞧瞧,看看有没有变质,这个就是周期性检验。...不仅针对库存的物料有周期性的检验,针对设备等也有周期性的检验,如测试设备的管理中,特别是计量设备,在使用的过程中,精度等指标可能发生变化,因此,工厂里通常针对此类设备设置一个固定的检测周期,每隔一段时间即要求将设备送检...在该传输转帐中, 为每个存储地点创建一个新的检验批。如果相应的检验批已经存在并且如果下一个检验日期已经达到,那么就执行传输转帐并相应地更改现存的检验批。...如果批次状态被更改或过帐发生,那么为每个存取地点创建一个新的检验批。 如果相关检验批已经存在并且下一个检验日期已经到达,那么批状态的更改或传输过帐就会发生。...如果不存在相应的检验批,那么当批次状态被更改或过帐发生时对于每个存取地点都创建一个新检验批。

    3.6K10

    JS计算颜色对比度

    问题出现的背景 某些网站和服务允许您通过上传图片,更改背景颜色或设计的其他方面来自定义您的个人资料。作为客户,此个性化将Web应用程序转换为您存储数据的小窝。...该函数将六字符十六进制颜色转换为整数,并将其与纯白色的整数值的一半进行比较。该功能易于记忆,但在理解我们如何感知频谱的某些部分时却很幼稚。不同的波长对对比度有更大或更小的影响。...我不认为这是一个主要问题,如果一些边缘情况颜色与另一种颜色形成对比,它们仍然非常易读。 现在让我们看一些常见的颜色,然后看看这两个函数如何比较。您可以很快发现它们在整个范围内都做得非常好。...纯红色#FF0000有一个触发器。这是由于’ YIQ ‘功能如何对RGB部分进行加权。虽然你可能个人喜欢一种风格而不是另一种风格,但两者都是合理的。...同样,大多数情况下,对比算法是同步的,但每隔一段时间他们就不同意了。您可以选择自己喜欢的内容,但两者都不可读。 结论 颜色对比很重要,特别是如果你放弃所有控制并采取不干涉的设计方法。

    5.4K30
    领券