Google面试之快乐智力题(Cracking the Coding Interview)

  1. 问:有20瓶药,其中19瓶装的都是1.0克的药片,只有1瓶装了1.1克的药。给你一个能称出具体克数的电子秤,只允许你称一次,怎么找出那瓶不一样的?
    答:如果药片足够,从第i(1<i<20)个瓶子里取出数量为i的药片称重为Xg,[X-(21*20/2)]/0.1即为装了1.1g药的瓶子的编号。

  2. Q:A bunch of men are on an island. A genie comes down and gathers everyone together and places a magical hat on some people’s heads ( i.e., at least one person has a hat). The hat is magical: it can be seen by other people, but not by the wearer of the hat himself. To remove the hat, those (and only those who have a hat) must dunk themselves underwater at exactly midnight. If there are n people and c hats, how long does it take the men to remove the hats? The men cannot tell each other (in any way) that they have a hat.
    A:假如只有一个帽子,那么戴着帽子的那个人出去一看,另外n-1个人都没有帽子, 而题目已经说了,至少有一个人是戴着帽子的,所以可以推断唯一一个戴着帽子的就是自己, 于是他会在第1天的午夜泡到水里,去掉头上的帽子。
    如果有2个帽子, 比如说是A和B戴着,A第1天发现B是戴着帽子的,而A又不知道一共有多少个帽子, 所以他无法判断自己头上是否戴了帽子,因此A第1天什么也不做。同理,B也一样。 到了第二天,A发现B还戴着他的帽子,这就说明了至少要有2顶帽子。否则如果只有一顶, B能推理出来,并且在第一天午夜就去掉它了。如果至少有2顶,B已经戴了一顶, 那么另一顶就在自己(A)头上了,所以A在第2天的午夜去掉了帽子。同理, B也做出了同样的推理,在第2天午夜去掉了帽子。
    从以上的分析我们马上可以得出,如果有c个帽子, 那么需要c天的时间才能把所有的帽子去掉,而且这c个人都是在第c天的午夜才摘除帽子的。

  3. 问:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋以最少的次数确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。
    答:这道题我是参考https://blog.csdn.net/linj_m/article/details/9792821,
    递归方法比较容易想但是求解起来比较麻烦,假设f{n}表示从第n层楼扔下鸡蛋,没有摔碎的最少尝试次数,第一个鸡蛋从第i层扔下,摔碎后第二个鸡蛋最坏尝试i-1次,没摔碎问题转化为f{n-i},则递归方程为f{n}=min{1+max{i-1,f{n-i}}}。
    数学方法为:假设最少次数为X次,则第一次应该在X层扔下,第二次应该在X+(X-1)次扔下,第三次应该在X+(X-1)+(X-2)次扔下… …以此类推,最终X个等差数列和为N(这里是100),即x(x+1)/2 >= 100, 即x>=14,得到答案最少要尝试14次。

  4. 问:有3升的瓶子和5升的瓶子,怎样量出4升水?
    答:
    方法一:先将5升瓶子装满(3:0;5:5),5升往3升瓶子里倒满后还剩余2升(3:3;5:2),把3升瓶子倒空后将5升瓶子中的2升倒入3升瓶子(3:2;5:0),再将5升瓶子装满后倒入3升瓶子直至倒满(3:3;5:4),此时5升瓶子中有4升水。
    方法二:将3升瓶子装满倒入5升瓶子(3:0;5:3),再次将3升瓶子装满倒入5升瓶子(3:1;5:5),将5升瓶子倒空后将3升瓶子的水倒入5升瓶子(3:0;5:1),将3升瓶子装满水后倒入5升瓶子(3:0;5:4),此时5升瓶子中有4升水。

  5. 问:有一个8x8的国际象棋棋盘,对角线两端的方格被去掉了。你有31个多米诺骨牌, 每个骨牌能覆盖棋盘上两个方格。你能用31个多米诺骨牌覆盖整个棋盘吗( 不包含去掉的2个方格)。如果能,请给出覆盖方案;如果不能,请说明为什么。
    答:不能,通过给棋盘上色可以更加容易理解这个问题。

    如上图所示,一块多米诺牌只能占据一块黄格+一块红格,不能同时占用两块颜色相同的格子,那么去掉两块黄色格字后,最后必定剩下两个红色格子和一张多米诺牌。

  6. Q:There are one hundred closed lockers in a hallway. A man begins by opening all one hundred lockers. Next, he closes every second locker. Then he goes to every third locker and closes it if it is open or opens it if it is closed (e.g., he toggles every third locker). After his one hundredth pass in the hallway, in which he toggles only locker number one hundred, how many lockers are open?
    A:第n把锁会在n的约数词被操作,一把锁只有经过奇数次操作才能处于open的状态,问题即转化为求1-100内有奇数个约数的个数,即整数平方的个数(1,4,9,16,25,36,49,64,81,100),共10把锁开着。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值