Leetcode 781.森林中的兔子(Rabbits in Forest)

Leetcode 781.森林中的兔子

1 題目描述(Leetcode題目鏈接

  森林中,每個兔子都有顏色。其中一些兔子(可能是全部)告訴你還有多少其他的兔子和自己有相同的顏色。我們將這些回答放在 answers 數組裏。

返回森林中兔子的最少數量。

示例:
輸入: answers = [1, 1, 2]
輸出: 5
解釋:
兩隻回答了 "1" 的兔子可能有相同的顏色,設爲紅色。
之後回答了 "2" 的兔子不會是紅色,否則他們的回答會相互矛盾。
設回答了 "2" 的兔子爲藍色。
此外,森林中還應有另外 2 只藍色兔子的回答沒有包含在數組中。
因此森林中兔子的最少數量是 5: 3 只回答的和 2 只沒有回答的。

輸入: answers = [10, 10, 10]
輸出: 11

輸入: answers = []
輸出: 0

說明:

  • answers 的長度最大爲1000。
  • answers[i] 是在 [0, 999] 範圍內的整數。

2 題解

  類似於分組,首先對數組中的每個數進行計數。舉個例子,如果1010出現了33次,則至少有10+1=1110+1=11只兔子,如果1010出現了1515次,則需要211=222*11=22只兔子。

class Solution:
    def numRabbits(self, answers: List[int]) -> int:
        res = 0
        dic = collections.Counter(answers)
        for key, value in dic.items():
            if value % (key + 1) == 0:
                res += (key + 1)*(value // (key + 1))
            else:
                res += (key + 1)*(value // (key + 1) + 1)
        return res
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章