题目描述:
题解:
参考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
其他思路:力扣
用编码的思路解决。