781. 森林中的兔子
1.题目
2.我的解决方案
- 这次我应该是用了脑子了,运行时间少于99%的人
- 一定要掌握collection.Counter()的用法
class Solution:
def numRabbits(self, answers: List[int]) -> int:
amount = collections.Counter(answers) # 统计: {数字:个数}
num_set = set(answers) # 去重{数字}
res = 0
for num in num_set: # 对于每一个数字
block = math.ceil(amount[num] / (num+1))
res += block * (num+1)
# 规律:该种数字num的个数在num+1的范围内,则对应的颜色的兔子就是num + 1
# 超过了num+1, 就要利用(总数量/(num+1))向上取整计算分块,每块为一个颜色种类
return res
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)