【Leetcode】458. Poor Pigs 可怜的小猪

解法

解题关键在于:

  1. 每次可以把多个桶里的水混在一起喂给猪
  2. p分钟内只要能喂就行,例如15分钟起效的话,60min可以喂5次

假设可以喂t次,那么把桶编号为0~t-1,按照t进制的规律来喂猪,假设t-1有l位,比如105化成5进制是410,所以从0到410,第0位可以从0取到4,第二位从0取到4,第三位从0取到4。
我们用3只猪:

  1. 第一只对应第0位,所以它被喂下编号的第0位是0的桶的混合,第二、第三只依此类推
  2. 假如第0只猪喂到2的时候死了,说明有毒的桶编号第0位为2,其它的继续
class Solution(object):
    def poorPigs(self, buckets, minutesToDie, minutesToTest):
        """
        :type buckets: int
        :type minutesToDie: int
        :type minutesToTest: int
        :rtype: int
        """
        t = minutesToTest//minutesToDie+1
        cnt = 0
        buckets -= 1
        while buckets:
            cnt += 1
            buckets /= t
        return cnt

相关文章: