leetcode(01)森林中的兔子

今天开始记录刷题的过程,每天记录自己刷题的题目和自己的解法,欢迎朋友们给出更多更好的解法。

森林中的兔子

森林中有未知数量的兔子,提问其中若干只兔子"还有多少只兔子与你(被提问的兔子)颜色相同"。将答案收集到一个整数数组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}')
相关推荐
dapeng28702 小时前
分布式系统容错设计
开发语言·c++·算法
qq_417695052 小时前
代码热修复技术
开发语言·c++·算法
Liu628888 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
AI科技星9 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
参.商.9 小时前
【Day41】143. 重排链表
leetcode·golang
条tiao条10 小时前
KMP 算法详解:告别暴力匹配,让字符串匹配 “永不回头”
开发语言·算法
干啥啥不行,秃头第一名10 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
tobias.b10 小时前
计算机基础知识-数据结构
java·数据结构·考研
zzh9407710 小时前
Gemini 3.1 Pro 硬核推理优化剖析:思维织锦、动态计算与国内实测
算法
2301_8073671910 小时前
C++中的解释器模式变体
开发语言·c++·算法