谷歌面试题之扔鸡蛋的问题(蓝桥杯摔手机的问题)

来自一个古老的公众号(摔手机就是根据扔鸡蛋过来的)
在这里插入图片描述

吐个槽先

正如昨天所说,这道题据说它最早见于谷歌的某次面试,由于题目表述容易,而解答相对麻烦,于是被很多人采用,广泛见于一些算法、规划的面试里。

要说清楚这个问题有点难度,有兴趣的小伙伴务必要静下心来仔细看。

首先我想说,该问题的情境构造是有缺陷的。因为在现实中,影响鸡蛋是否会破裂的最重要因素应该是地面的坚硬和平整程度,而不是鸡蛋下落的高度:把鸡蛋从100层楼顶扔进棉花堆,和从2楼扔向坚硬的水泥地面:依常识判断,还是后者更容易碎。就像那句话说的,能够杀死你的是突然的速度改变,而不是高速本身:你会在接触地面的一瞬间死去,而不是死于高速坠落。

不过你懂的,这是题目,认真你就输了。

我们只需要遵循题目本身的设定就好,吐槽可以,不改变事实。

一个鸡蛋的无助

为了更好地解释这个问题,让我们先看一个简化的情况:如果你手头只有一个鸡蛋,该如何找到这个最高安全楼层?

——显然只能一层层地试。

简单地说,这个过程就是先在1楼把鸡蛋扔下地,看看碎不碎。

碎了,那么得到最高安全楼层为0。

如果没碎,那么拾起这个鸡蛋,上2楼,再扔下地,看碎不碎。

同样,碎了,那么得到最高安全楼层为1;没碎,那就再拾起鸡蛋奔3楼……

重复这个过程,直到发生两个结果之一:鸡蛋在第N层上首次碎掉,那么得到最高安全楼层为N-1;或者鸡蛋一直没碎,最高安全楼层为100(其实应该大于100,但这道题默认最大是100,所以姑且认为是100)。

由于鸡蛋随时可能会在某一层突然碎掉,而且一旦碎掉就再也没有鸡蛋可用,所以在整个过程中不能有任何投机取巧,只能逐层尝试,否则在任何一层上蛋碎了,我们都不能准确得出最高安全楼层。

一个鸡蛋的情况大致如此。虽然答案简单粗暴,但涉及的思路会对两个鸡蛋的情况有所启示。

两个鸡蛋的闹腾

两个鸡蛋的情况下,基本的想法也不难理解:

由于有两个鸡蛋可以用,所以第一个鸡蛋得用来确定

  • 36
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值