【面试题】智力题

文章目录

该文章记录一些面试中的智力题目。

腾讯

1000瓶毒药里面只有1瓶是有毒的,问需要多少只老鼠才能在24小时后试出那瓶有毒。

题目来源:最累的一场面试,还得是腾讯!


参考:这是一个经典的二分法或者说是二进制的问题。对于1000瓶药,可以用二进制表示为从0000000000(0)到1111101000(1000)的范围,总共需要10位。因此,需要10只老鼠来试出哪一瓶是有毒的。具体的实施方案就是,将每一瓶药对应到一个二进制的数字,然后让对应到1的位置的老鼠去试那一瓶药。这样,24小时后,只需要看哪些老鼠死了,就能确定哪一瓶药是有毒的。


老鼠的死亡状态分 0-1,n 个老鼠就可以确定 2^n 个状态,即判断这么多瓶毒药中哪瓶是有毒的。

有两根不规则的绳子,两根绳子从头烧到尾均需要一个小时,现在有一个45分钟的比赛,裁判员忘记带计时器,你能否通过烧绳子的方式来为这场比赛计时?

题目来源:https://leetcode.cn/circle/discuss/ZrlHEG/


注意!:绳子是不均匀的!也就是说燃烧的时间和烧到绳子的长度没有关系。

如果绳子是规则均匀的,我们可以通过对折的方式把绳子标记为4段,点燃一端,烧到提前标记的3/4处就是45分钟。

但是本题的前提是绳子是不规则的,这个时候能不能解答出来的关键在于你有没有意识到一根绳子同时点燃两头,燃烧完的时间为30分钟。

基于上面的思路,我们先给两根绳子编个号分别为A绳和B绳,点燃A绳的一端,同时点燃B绳的两端,当B绳烧完的时候时间就过去30分钟,这个时候A绳还需要30分钟才能烧完,但是如果我们在B绳烧完的时候点燃A绳的另一端,两端同时烧A绳就还需要15分钟可以烧完。这样两根绳子烧完总用时45分钟,所以我们可以通过烧绳子的方式来为这场比赛计时。

有25匹马,5条赛道,每条赛道同时只能有一匹马跑,假设每匹马的水平都很稳定,在没有计时器的情况下最少需要比几场才能确定前三名。

题目来源:https://leetcode.cn/circle/discuss/V6ZITu/


7 场!

25匹马分成5组,每组先进行一次比赛,这就要比5场。

我们给每个小组内进行完比赛的马进行标号,排名依次递减:Ai > Bi > Ci > Di > Ei,5 >= i >= 1。

五场比赛后确定了每个小组内的名次,接下来只需要把每个小组的第一名拿出来A1 A2 A3 A4 A5比一次,确定每个小组第一名的排名。假设结果是 A1 > A2 > A3 > A4 > A5,我们会得到下面的矩阵:

这样确定第一名A1。

根据上面的矩阵规律,可以确定第二名只能从B1和A2之间产生,接下来我们针对这两种情况来进行分别讨论。

如果第二名是B1,那么第三名只能从A2 B2 C1 之间产生。

如果第二名是A2,那么第三名只能从B1 B2 A3 之间产生。

所以只需要再将 A2 A3 B1 B2 C1这5匹马比一次就能确定第二名和第三名。

总共的比赛场次是5+1+1=7,最少需要比7场可以确定前三名。

相关推荐
用户095 分钟前
Jetpack Compose静态与动态CompositionLocal深度解析
android·面试·kotlin
绝无仅有24 分钟前
用友面试题解析:项目介绍、Dubbo、MQ、分布式事务、分布式锁等
后端·面试·github
Dream it possible!1 小时前
LeetCode 面试经典 150_链表_反转链表 II(60_92_C++_中等)(头插法)
c++·leetcode·链表·面试
绝无仅有1 小时前
京东面试题解析:SSO、Token与Redis交互、Dubbo负载均衡等
后端·面试·github
我是华为OD~HR~栗栗呀3 小时前
华为od-22届考研-C++面经
java·前端·c++·python·华为od·华为·面试
我是华为OD~HR~栗栗呀3 小时前
华为OD, 测试面经
java·c++·python·华为od·华为·面试
我是华为OD~HR~栗栗呀5 小时前
华为OD-23届-测试面经
java·前端·c++·python·华为od·华为·面试
我是华为OD~HR~栗栗呀5 小时前
华为od面经-23届-Java面经
java·c语言·c++·python·华为od·华为·面试
Dream it possible!13 小时前
LeetCode 面试经典 150_链表_合并两个有序链表(58_21_C++_简单)
leetcode·链表·面试·1024程序员节
韭菜炒大葱16 小时前
Git入门指南:掌握版本控制的核心工作流程
git·面试