leetcode458. 458. 可怜的小猪 python

题目描述:

 

 题解:

参考leetcode评论区

以示例1为例,minutestodie=15 minutestotest=60,在test时间内:

一只小猪可以喝四桶水,因此可以验证的水桶数量为5(如果前四桶都没有死,说明第五桶有毒)。

两只小猪情况如下:

一只小猪喝第i行,一只小猪喝第i列:

如果两只小猪都死亡,则(i,i)位置有毒。

如果第一只小猪死亡,第二只没有,说明有毒的在第i行,第i列之后(因为i之前被这种方式验证过,小猪没有死,说明没有毒)

如果有毒的桶的位置为(3,5):

1.第一只小猪喝第1行,第二只喝第1列,存活,第一行第一列排除。

2.第一只小猪喝第2行,第二只喝第2列,存活,第二行第二列排除。

3.第一只小猪喝第三行,第二只喝第三列,第一只死亡,第二只存活,说明有毒位置在(3,4)(3,5)

4.第二只小猪喝第四列,存活,排除(3,4),有毒位置在(3,5)

 以此类推,pignum只小猪,可以验证的桶的数量为(minutestotest/minutestodie)^pignum

class Solution(object):
    def poorPigs(self, buckets, minutesToDie, minutesToTest):
        minpignum = 0
        while (minutesToTest/minutesToDie+1)**minpignum<buckets:
            minpignum+=1
        return minpignum

 其他思路:力扣

用编码的思路解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值