两个面试常见的智力题

1. 有N台电脑,其中有大于一半的电脑是好电脑,其他的是坏电脑。用一台好电脑检测另一台电脑,结果肯定是正确的。用一台坏电脑检测另一台电脑,结果则可能是正确的,也可能是错误的。请写出一个策略,找出一台好电脑。

这个是同事发邮件问的一道题目,挺有意思的,我想了半天,只相出了一个O(n2)的解法,但是随后有一个Intern给出了一个O(N)就可以找出一台好电脑的解法,真是强人啊。

具体做法如下:

假设N个电脑顺序排列,第一次取最前面的两台电脑,使这两台电脑互相测试,

(1)如果两台电脑的检测结果都是好的,那么这两台电脑,都保存下来

(2)如果两台电脑的检测结果是一好一坏或者两个都是坏,那么这两个电脑就从队列中移除

(3)如果执行的是(1),那么就使用刚才两台中的后一台电脑和其后相邻的电脑,重新开始测试,根据结果,重复这一过程。

(4)如果执行的是(2),那么就使用后续相邻的两台电脑开始新一轮的测试,根据结果重复这一过程。

由于最开始,好电脑的台数大于一半,因此最后当队列中只剩下一台电脑时,该电脑肯定是好电脑。

举例说明如下,假设有5台电脑,其中3台好电脑,2台坏电脑,假设一个可能的队列如下:

Good ,Bad,Good,Good,Bad,依次编号为1,2,3,4,5

那么,首先1和2互相测试,结果肯定不可能是都好,因此,1和2同时被移出队列,那么队列目前剩下3,4,5。 然后,使用3和4互相测试,因为都是好电脑,所以结果肯定是两个好,那么都保留,然后使用后一个,也就是4号来和后面相邻的电脑,也就是5号来做下轮的相互测试,因为5号是坏电脑,那么4和5的相互测试结果不可能是两个好,因此,4,5同时被移出队列。至此,就只剩下3号这一台电脑,而且3号电脑也是一台好电脑。

 

2.一个水桶装满可以装3升水,一个水桶装满可以装5升的水,请问如何用这两个桶装出4升的水?

这个题目是我面试的时候碰到的一个简单的智力题目,要求不可以借助其他的任何工具。

方法有很多,其中一种如下:

用5升的桶装满水,然后把5升的桶中的水倒入3升的桶中,那么5升的桶中剩下2升水。将3升桶中的水倒掉,然后再将5升桶中剩下的2升水倒入3升的桶中。这是3升的桶中只有2升的水,也就是说剩余的空间可以再容纳1升的水。然后,将5升的水装满,往3升的桶中倒水,当3升的桶装满的时候,5升桶剩下的水必然是4升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值