力扣题458:可怜的小猪

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

喂猪的规则如下:

​ 1、选择若干活猪进行喂养
​ 2、可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。
​ 3、小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。
​ 4、过了 minutesToDie 分钟后,所有喝到毒药的猪都会死去,其他所有猪都会活下来。
​ 5、重复这一过程,直到时间用完。
​ 给你桶的数目 buckets ,minutesToDie 和 minutesToTest ,返回在规定时间内判断哪个桶有毒所需的 最小 猪数。

示例:

示例一:
输入:buckets = 1000, minutesToDie = 15, minutesToTest = 60
输出:5

示例二:
输入:buckets = 4, minutesToDie = 15, minutesToTest = 15
输出:2

提示:

  • 1 <= buckets <= 1000
  • 1 <= minutesToDie <= minutesToTest <= 100

题解思路

​ 为了拯救小猪,我辈义不容辞。

​ 一个猪代表一个维度。

​ 简单来说,例如有两头猪,一头猪代表行,一头猪代表列,

​ 如:我们有16个桶,放在4行4列。

​ 第一次检测:测试第一行,第一列

​ 第二次检测:测试第二行,第二列

​ …

​ 假如行猪死在第二行,列猪死在第三列,则说明第三行第二列的痛就是毒药。

​ 所以每一个维度的最大值为minutesToDie / minutesToDie + 1(行猪或列猪检测到第三行都没有死时,就不用检测了,第四行第四列必是毒药)

​ 那么我们只需要确定需要几个维度(几个猪)可以满足规定次数内检测完所有buckets(桶)即可。

源代码

class Solution {
public:int pow(int m, int n){   //返回m的n次方int res = m;for(int i = 1; i < n; i++){res *= m;}return res;}int poorPigs(int buckets, int minutesToDie, int minutesToTest) {int pigs = 0;int maxRound = minutesToTest / minutesToDie + 1;while(pow(maxRound, pigs) < buckets){pigs++;}return pigs;}
};

​ 就解决完啦!

力扣题458:可怜的小猪相关推荐

  1. 458. 可怜的小猪

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

  2. 滑动窗口算法框架(Java版)秒杀力扣题(76、567、438、3、485)

    一.声明 1.非常感谢东哥(labuladong)分享了**滑动窗口算法框架**: 2.我在理解了东哥的思想后,用Java实现了滑动窗口算法框架,一来方便自己学习,二来方便一些Java小伙伴: 3.再 ...

  3. 力扣题【简单级别】1

    2019.9.10 771.宝石与石头 public int numJewelsInStones(String J, String S) {if (J == null || S == null) re ...

  4. 力扣题 <爬楼梯> 递归结合表

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶 ...

  5. 力扣题——2.除数与被除数

    下面,我们来看一道力扣题 题目如下: 需求:给定两个整数,被除数和除数(都是正数,且不超过int范围)将两数相除 要求:不使用乘法.除法和%运算符得到商和余数 分析: 在分析这道题之前,我们先来将一个 ...

  6. 力扣题库设计循环队列

    题目要求: 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器". 循环队列 ...

  7. 【微软算法面试高频题】可怜的小猪

    微软和谷歌的几个大佬组织了一个面试刷题群,可以加管理员VX:sxxzs3998(备注CSDN),进群参与讨论和直播 1. 题目 有 buckets 桶液体,其中正好有一桶含有毒药,其余装的都是水.它们 ...

  8. 一道『easy』等级的力扣题,我写了两个小时的笔记...

    做第13题:13. 罗马数字转整数,本身的逻辑很简单,但是我写了两个小时的笔记. 原因是我对 C++ 11 及以上一直不熟(以前一直在用 python 干活儿),因此,决定,一边做题,一边总结知识点. ...

  9. LeetCode 458. 可怜的小猪(信息论方法)

    题目描述 有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水.它们从外观看起来都一样.如果小猪喝了毒药,它会在 15 分钟内死去. 问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒 ...

最新文章

  1. SAP Web Intelligence初探
  2. IEEE CS:2021年的12大技术趋势
  3. 开发人员职位:对编程语言Python的需求明显下降
  4. Fabric架构演变之路
  5. 多线程与高并发(二):解析自旋锁CAS操作与volatile
  6. hdu4699-Editor【对顶栈】
  7. dubbo的端口地址和ip写在那_开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~...
  8. maven+mvc设计模式
  9. MySQL百万级高并发网站优化
  10. 牛客练习赛29 F 算式子
  11. 【CCF】关于NOI Online测试有关事项的问答
  12. Linux运维工程师必备工具合集
  13. 树莓派 PHP白屏,树莓派系统安装及3.5寸显示屏白屏解决办法
  14. WIN2016远程桌面服务配置和授权激活
  15. 163邮箱|电子邮件注册,163邮箱如何注册申请?
  16. Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)
  17. 世界杯历史:1930年---2002年(乌拉圭---韩日)
  18. OneNote插件找不到选项卡的解决
  19. 图片无损放大软件哪个好?图片放大不失真这样做
  20. 基于STM32MP157的GPU编程之DRM驱动调试

热门文章

  1. 项目中使用EasyPOI完成监控设备历史数据的导出
  2. 方法入门_方法的定义
  3. Request_请求转发
  4. SpringCloud版本定义说明
  5. Spring Session实战3
  6. java 怎么清除画布_HTML5 Canvas 清除画布
  7. php数组格式化显示,php 打印数组格式化显示
  8. Maven(3)--聚合与继承
  9. 代码详细解析简单常用DOS命令 java会用这些就够了!
  10. 约瑟夫问题的学习(基于循环链表)以及基于循环数组