今天开始记录刷题的过程,每天记录自己刷题的题目和自己的解法,欢迎朋友们给出更多更好的解法。
森林中的兔子
森林中有未知数量的兔子,提问其中若干只兔子"还有多少只兔子与你(被提问的兔子)颜色相同"。将答案收集到一个整数数组answers中,其中answers[i]是第i只兔子的回答。给你数组answers,返回森林中兔子的最少数量。
输入示例1:
answers=[1,1,2]
输出示例1:
输出:5
输入示例2:
answers=[10,10,10]
输出示例2:
11
我的思路:分组计数,使用字典记录。
具体代码如下:
python
def rabbit(answer_list):
min_rabbit_num = 0
answer_count = {}
for i in answer_list:
answer_count[i] = answer_count.get(i, 0) + 1 if i in answer_count else 1
for key, value in answer_count.items():
n = value // (key + 1)
m = value % (key + 1)
min_rabbit_num += n * (key + 1) if m == 0 else (n + 1) * (key + 1)
return min_rabbit_num
# answers=[1,1,2]
min_rabbit_num = rabbit([10, 10, 10])
print(f'min_rabbit_num:{min_rabbit_num}')