本文主要是介绍leetcode 458. 可怜的小猪 及 题目的不严谨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这道题很有意思,感觉是之前老鼠喝毒药的进阶版,增加了个时间属性,不错解法差不多,主要是看看在测试时间内,有多少批猪死亡,例如:60分钟内,死亡时间为15,则增加了4个状态,则变成了5个状态,所以就要对log(1000) / log(5)上取整,有这么多头猪就可以了。
class Solution {
public:
int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
if(minutesToTest < minutesToDie)
return 0;
return ceil(log(buckets) / log(floor(minutesToTest/minutesToDie) + 1));
}
};
题目不严谨,有可能只需一只猪就可以判断1000个桶
为什么要规定每15分钟猪才能喝一次水?作为一只小猪猪难道不可以每一分钟喝水?
那么由5个状态就变成46个状态,我真是一个天才,哈哈
就如上图所示,其他人陷入思维误区,以为把60分钟分为4个15分钟,上图红色所示,我们16分钟那批猪如果检查出毒药了,那肯定是1分钟那批桶有问题,自查看1分钟那批桶的编号即可,依次类推,就可以增加了无数个时间状态,其实可以分成无数个15分钟,涉及到精度的问题,暂且规定1分钟为一批猪,则可以分成60-15个状态,即45个状态,和之前的那个二进制状态,一共46个状态。那么就是log(1000) / log(46) ,上取整,为2只猪。
如果你手速很快,猪可以一秒喝一口水的话,那就有45*60+1个状态,则需要1只猪就可以了。
这篇关于leetcode 458. 可怜的小猪 及 题目的不严谨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!