作家
登录

妙解谷歌压箱底面试题:如何正确的从楼上抛鸡蛋

作者: 来源: 2018-01-03 00:15:19 阅读 我要评论

关于编程工作有很多很不错的面试谜题。新年之际,我把压箱底儿的一道好题,同时也是传说中谷歌雇用官最爱好问的一道题找出来了!

图0:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

今天我梅蓟?好八一八这道题,如不雅你本年正好想去谷歌面试,可以抓紧多读几遍!(绝对不会出现下图的情况,我们只放有口碑的神助攻

图1:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

标题如下:

你在一座100层的高楼大年夜喷鼻里工作,拿到了两个一模一样的鸡蛋。你得搞明白鸡蛋最高可以大年夜几层楼扔出去还不摔坏。

大年夜多半人会写出算法来解决这个谜题(我们同样也是会用算法),然而实际上有更轻易的办法。

敲黑板说重点啦!

图2:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

最简单的答复

最简单的方法来获取起码楼层数就是将鸡蛋大年夜第一层扔出,然后第二层,然后依次往后叠加。如许一来,当鸡蛋破裂那一刻我们就知道是这一层了。这是一个靠得住的算法,然则在最差的情况下它须要的扔掷次数是100次。

须要留意的最重要的一点是,假如你只有一颗鸡蛋,这是独一靠得住的办法。所以在你打破第一颗鸡蛋时就须要开端应用这个算法。

直觉性的谜底

我们可以先做些假设:

  • 如不雅鸡蛋大年夜某一楼层跌落而不摔坏,那么当它大年夜更低楼层跌落也不会有破损。
  • 一个在被扔掷之后无缺无损的蛋可以被再应用。
  • 一颗鸡蛋如不雅破损,则必会被丢弃。
  • 跌落对于所有鸡蛋都具有一致效应。
  • 如不雅一颗鸡蛋大年夜某一楼层跌落之后受损,那么当它大年夜更高楼层跌落后必定会摔坏。
  • 如不雅一颗鸡蛋大年夜一次跌落中存活下来,那么它必定会大年夜更短程的降低中存活。

如许,我们应当把这100层划分成更小数量标的区间,以尽可能有效地应用这第一颗鸡蛋。是以,一个凭直觉的并且颇受迎接的办法是大年夜1/第n层逐层检查。


比方说,大年夜第一层到第三层。由此得出算法如下:

大年夜33楼扔掷出这颗鸡蛋。如不雅它破损了,那么我们用第二颗鸡蛋检查第32层楼。

对于1/3最坏的情况是最大年夜值是33层,如许一来,我们可能可以找到一个完美的n,借助一些动态编程手段,来竽暌古化扔掷次数。这是一个别现编程思维的有价值的解决方法,然而这不是最优解。

完美解决筹划

畏敲?解完美解法,我们须要懂得均衡状况,用于计算出在最坏巧匠下所需的扔掷次数。

图3:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

这里,F(n) 是我们大年夜开端扔掷鸡蛋计算的下一层楼层。

假如我们惹人以下的变量:

图4:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

那么均衡点将会是如下:

图5:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

最优解是当这个方程里的所有参数都相等。我们是若何取得的呢?大年夜末尾开端看,最后的D(n)将会变成1,因为我们最终将会达到一个点,就是只有单一的一层麓竽暌姑于扔掷第一颗鸡蛋。所以D(n-1)应当等于2,因为它比拟于第一颗鸡蛋少了一次扔掷。

我们接着会发明第一颗鸡蛋最终应当是大年夜第99层楼扔掷,之前是大年夜99-2=97层,再往前则是97-3=94层,90, 85, 79, 72, 64, 55, 45, 34, 22,然后是第九层。这是一个最优解!如许一来,我们须要在最坏的情况下扔掷14次(最小的差别在于13,然则我们还须要在第九层额外投一次)。

检查

好啦,我们已经有懂得决筹划,可以无需任何其他赞助来解开它。如今是时刻验证它是否精确了!为此,我们可以写一个Kotlin方程式。

起首,我们来解释一下对一些决定计划来说,是若何计算扔掷次数的。当我们有2层或者更少的层数,那么我们须要按照残剩的楼层数来扔掷尽量多的次数。不然我们应当调用如下方出现的均衡函数:

图6:妙解谷歌压箱底面试题:若何精确的大年夜楼上抛鸡蛋

【编辑推荐】

  1. 谷歌提出渐进式web应用开辟概念,Angular Ignite UI帮法度榜样员实现
  2. 联手!Facebook,谷歌,IBM和红帽合作开放源代码许可证!
  3. 谷歌地图进行iPhone X“刘海适配” 画面全屏填充
  4. 国内开辟者最爱的谷歌扩大集合
  5. 因Python微软和亚马逊再次联手推动出工智能软件,谷歌靠边站
【义务编辑:未丽燕 TEL:(010)68476606】

请提出一个算法,能找到扔掷鸡蛋却包管不摔坏的起码次数~

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?

这里我们调用了bestMaxThrows 函数,这是一个假设函数,它会返回一个扔掷次数的数值,假假寓下来的一系列决定计划是完美的。

我们是如许定义它的:


  推荐阅读

  大数据做白血病基因配比 提高10倍效率

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? “以前做白血病基因配比,一小我一下昼才能做七八个,如今我们在数据库做配比只要3分钟就能完成这个活。>>>详细阅读


本文标题:妙解谷歌压箱底面试题:如何正确的从楼上抛鸡蛋

地址:http://www.17bianji.com/lsqh/40182.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)