【Leetcode 每日一题】781. 森林中的兔子

问题背景

森林中有未知数量的兔子。提问其中若干只兔子 "还有多少只兔子与你(指被提问的兔子)颜色相同?" ,将答案收集到一个整数数组 a n s w e r s answers answers 中,其中 a n s w e r s [ i ] answers[i] answers[i] 是第 i i i 只兔子的回答。

给你数组 a n s w e r s answers answers,返回森林中兔子的最少数量。

数据约束

  • 1 ≤ a n s w e r s . l e n g t h ≤ 1000 1 \le answers.length \le 1000 1≤answers.length≤1000
  • 0 ≤ a n s w e r s [ i ] < 1000 0 \le answers[i] < 1000 0≤answers[i]<1000

解题过程

找规律,考虑到要求数量最少,假设当前数组元素是 i t e m item item,它共有 n u m num num 个等值元素,那么答案会增加 ⌈ n u m i t e m + 1 ⌉ \lceil \frac{num}{item + 1} \rceil ⌈item+1num⌉。

建立数组元素与数量之间的哈希映射,再遍历计算结果即可。

具体实现

java 复制代码
class Solution {
    public int numRabbits(int[] answers) {
        Map<Integer, Integer> count = new HashMap<>();
        for (int item : answers) {
            count.merge(item, 1, Integer::sum);
        }
        int res = 0;
        for (Map.Entry<Integer, Integer> entry : count.entrySet()) {
            int item = entry.getKey();
            int num = entry.getValue();
            res += (item + num) / (item + 1) * (item + 1);
        }
        return res;
    }
}
相关推荐
白杆杆红伞伞15 分钟前
01_svm_二分类
算法·支持向量机·分类
isyoungboy17 分钟前
使用SVM构建光照鲁棒的颜色分类器:从特征提取到SVM
算法·机器学习·支持向量机
极客数模18 分钟前
2025年MathorCup 大数据竞赛明日开赛,注意事项!论文提交规范、模板、承诺书正确使用!2025年第六届MathorCup数学应用挑战赛——大数据竞赛
大数据·python·算法·matlab·图论·比赛推荐
.小小陈.28 分钟前
数据结构3:复杂度
c语言·开发语言·数据结构·笔记·学习·算法·visual studio
立志成为大牛的小牛29 分钟前
数据结构——二十四、图(王道408)
数据结构·学习·程序人生·考研·算法
TT哇35 分钟前
【优先级队列(堆)】2.数据流中的第 K ⼤元素(easy)
算法·1024程序员节
Matlab程序猿小助手1 小时前
【MATLAB源码-第303期】基于matlab的蒲公英优化算法(DO)机器人栅格路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab·机器人·kmeans
CoderIsArt1 小时前
CORDIC三角计算技术
人工智能·算法·机器学习
立志成为大牛的小牛1 小时前
数据结构——二十九、图的广度优先遍历(BFS)(王道408)
数据结构·数据库·学习·程序人生·考研·算法·宽度优先
Alex艾力的IT数字空间1 小时前
基于PyTorch和CuPy的GPU并行化遗传算法实现
数据结构·人工智能·pytorch·python·深度学习·算法·机器学习