微软和谷歌的几个大佬组织了一个面试刷题群,可以加管理员VX:sxxzs3998(备注CSDN),进群参与讨论和直播

1. 题目

有 buckets 桶液体,其中正好有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。

喂猪的规则如下:

  • 选择若干活猪进行喂养
  • 可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。
  • 小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。
  • 过了 minutesToDie 分钟后,所有喝到毒药的猪都会死去,其他所有猪都会活下来。
  • 重复这一过程,直到时间用完。

给你桶的数目 buckets ,minutesToDie 和 minutesToTest ,返回在规定时间内判断哪个桶有毒所需的最小猪数。

示例 1:
输入:buckets = 1000, minutesToDie = 15, minutesToTest = 60
输出:5示例 2:
输入:buckets = 4, minutesToDie = 15, minutesToTest = 15
输出:2示例 3:
输入:buckets = 4, minutesToDie = 15, minutesToTest = 30
输出:2

2. 解析

举例说明:

假设:总时间 minutesToTest = 60,死亡时间 minutesToDie = 15,pow(x, y) 表示 x 的 y 次方,ceil(x)表示 x 向上取整 当前有只小猪,最多可以喝 times = minutesToTest / minutesToDie = 4 次水 最多可以喝 4 次水,能够携带 base = times + 1 = 5 个的信息量,也就是(便于理解从 0 开始): (1) 喝 0 号死去,0 号桶水有毒 (2) 喝 1 号死去,1 号桶水有毒 (3) 喝 2 号死去,2 号桶水有毒 (4) 喝 3 号死去,3 号桶水有毒 (5) 喝了上述所有水依然活蹦乱跳,4 号桶水有毒

结论是 1 只小猪最多能够验证 5 桶水中哪只水桶含有毒,当 buckets ≤ 5 时,answer = 1。那么 2 只小猪可以验证的范围最多到多少呢?我们把每只小猪携带的信息量看成是 base进制数,2 只小猪的信息量就是 pow(base, 2) = pow(5, 2) = 25,所以当 5 ≤ buckets ≤ 25时,anwser = 2。那么可以得到公式关系:pow(base, ans) ≥ buckets,取对数后即为:ans ≥ log(buckets) / log(base),因为 ans 为整数,所以 ans = ceil(log(buckets) / log(base))

那小猪到底是如何喂水的呢?下面这个动态图可以介绍整个喂水的过程:

class Solution {
public:int poorPigs(int buckets, int minutesToDie, int minutesToTest) {int states = minutesToTest / minutesToDie + 1;return ceil(log(buckets) / log(states));}
};

微软和谷歌的几个大佬组织了一个面试刷题群,可以加管理员VX:sxxzs3998(备注CSDN),进群参与讨论和直播

【微软算法面试高频题】可怜的小猪相关推荐

  1. 【微软算法面试高频题】俄罗斯套娃信封

    1. 题目 给你一个二维整数数组 envelopes ,其中 envelopes[i]=[wi,hi]envelopes[i] = [w_i, h_i]envelopes[i]=[wi​,hi​] , ...

  2. 【微软算法面试高频题】超级洗衣机

    微软和谷歌的几个大佬组织了一个面试刷题群,可以加管理员VX:sxxzs3998(备注CSDN),进群参与讨论和直播 1. 问题 假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定 ...

  3. 算法面试:精选微软经典的算法面试100题(第1-20题)

    算法面试:精选微软经典的算法面试100题 引言: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2 ...

  4. 横空出世,席卷Csdn [评微软等公司数据结构+算法面试100题]

    横空出世,席卷Csdn ---评微软数据结构+算法面试100题 作者:July 时间:2010年10月-11月.版权所有,侵权必究. --------------------------------- ...

  5. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  6. 横空出世,席卷互联网--评微软等公司数据结构+算法面试100题

    横空出世,席卷互联网                                                                          ---评微软数据结构+算法面试1 ...

  7. [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案]

    [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案] 作者 July.Csdn网友 二零一一年一月四日 ------------------------------------ ...

  8. 算法面试:精选微软等公司经典的算法面试100题 第26-35题

    算法面试:精选微软等公司经典的算法面试100题 第26-35题 26.左旋转字符串 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef左旋转2位得到字 ...

  9. [整理III]微软等数据结构+算法面试100题[最新第61-80题]

    精选微软等数据结构+算法面试100题[第61-80题] --最新整理公布 昨日,11.19,最新整理了,第61-80题,现在公布. 可以这么说,绝大部分的面试题,都是这100道题系列的翻版, 此微软等 ...

最新文章

  1. stat_count() must not be used with a y aesthetic
  2. linux用户管理练习题
  3. 使控件大小随窗口变化
  4. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解
  5. enote笔记语言(2)(ver0.2)
  6. Redis可视化客户端
  7. 一个很懂业务的资深技术Leader的技术管理成长之路
  8. 如何使用Windows Identity Foundation(WTF)实现单点登录
  9. 黑苹果之联想Y430P亮度记忆功能
  10. SQL server 常见面试题
  11. BP神经网络逼近函数项目(含matlab代码)
  12. DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...
  13. 计算机专业朋友圈文案,朋友圈文案文艺范简约 很美很好听的文艺句子合集
  14. xmta温度控制仪说明书_【智能温控仪XMTA-908说明书】- 黄页88网
  15. 病毒币骗局:号称募资生产口罩,研究疫苗
  16. 第八章 自我反省的功夫
  17. Android常用设计模式之Builder模式理解
  18. 面试时需要注意的事项
  19. 发现一个兼具图像处理、存储和加速的wordpress插件
  20. DB2 DMS表空间大小限制

热门文章

  1. android虚拟内置sd卡,安卓虚拟器bluestacks虚拟sd卡打开方法【图解】
  2. 我爬取了CSDN总榜TOP10博主的2万多篇文章,看看他们为什么这么火
  3. virtualBox 报VT-x is disabled in the BIOS for both all CPU modes (VERR_VMX_MSR_ALL_VMX_DI的错误
  4. 学会计学java,Java 属于以下哪种语言?_学小易找答案
  5. < CSDN周赛解析:第 27 期 >
  6. VR全景看家装,让家装不再“纸上谈兵”
  7. 4.2.1 Duration and Convexity
  8. 30%自媒体从业者才知道的爆款标题的专用模板,封面图的文案同样适用。
  9. 四川托普计算机职业学校环境,四川四川托普计算机职业学校
  10. python数据集处理一些方法备份(长期更新)