题目

森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。

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

示例

输入: answers = [1, 1, 2]
输出: 5
解释:
两只回答了 "1" 的兔子可能有相同的颜色,设为红色。
之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。
设回答了 "2" 的兔子为蓝色。
此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。
因此森林中兔子的最少数量是 5: 3 只回答的和 2 只没有回答的。

说明

  1. answers 的长度最大为1000。
  2. answers[i] 是在 [0, 999] 范围内的整数

题解

  1. 同一种颜色的兔子回答一定一样,但是回答一样的兔子不一定是一种颜色
  2. 数组中的值可能出现一次或多次
    1. 出现一次,值为others的元素只出现一次:表示除自身外与其颜色相同的兔子的数目。即:该颜色的兔子一种有others+1只
    2. 出现多次,值为others的元素出现了count次:
    3. 我们假设某种颜色的兔子一共有all只,兔子回答答案的数值是others。两者满足:all = others + 1
    4. 但是数组内回答others的兔子数量为count
      1. count <= others + 1:此时表明该颜色的兔子有的没有回答。为了达到【最少的兔子数量】可以假定这count只兔子为同一种颜色
      2. count > others + 1:若一种颜色的兔子全部回答,则count应该为others+1.此时count>others+1表明至少有两种颜色的兔子回答了相同的结果。为了达到【最少兔子数量】,我们尽可能的让每一种兔子的数量达到其上限:others+1
参考代码
class Solution {public int numRabbits(int[] answers) {Map<Integer, Integer> map = new HashMap<>();for(int i = 0; i < answers.length; i++) {int val = map.getOrDefault(answers[i], 0) + 1;map.put(answers[i], val);}int res = 0;for(int key : map.ketSet()) {if(key == 0) {res += map.get(key);} else if(map.get(key) % (key + 1) == 0) {res += map.get(key) / (key + 1) * (key + 1);} else {res += (map.get(key) / (key + 1) + 1) * (key + 1);}}}
}

781.森林中的兔子相关推荐

  1. leetcode 781. 森林中的兔子(hashmap)

    森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返回森林中兔子的最少数量. 示例: 输入: answers ...

  2. LeetCode 781. 森林中的兔子(哈希+贪心)

    文章目录 1. 题目 2. 解题 1. 题目 森林中,每个兔子都有颜色. 其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色. 我们将这些回答放在 answers 数组里. 返回森林 ...

  3. leetcode每日一题—781.森林中的兔子

    题目: 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里.返回森林中兔子的最少数量. 解答: class So ...

  4. leetcode 781. Rabbits in Forest | 781. 森林中的兔子(Java)

    题目 https://leetcode.com/problems/rabbits-in-forest/ 题解 另 answers 中的每一个元素称为 n,那么,n 最多能抵消 n+1 个同类元素. c ...

  5. 森林中的兔子(超详细解析)

    森林中的兔子题目题解 题目 解析 题解一 题解二 题目 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返 ...

  6. [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. Leetcode--781.森林中的兔子

    森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返回森林中兔子的最少数量. 示例: 输入: answers ...

  8. 森林中的兔子,有感而抒

    力扣4月4日每日一题,传送门 有感而抒 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返回森林中兔子的最 ...

  9. 科研文献|根相关真菌群落反映了亚热带森林中宿主的空间共生模式

    TITLE:Root-associated fungal community reflects host spatial co-occurrence patterns in a subtropical ...

  10. R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数

    R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录

最新文章

  1. MEET2020 | 嘉宾已确认!李开复、倪光南等AI大咖齐聚,共话人工智能新价值新边界新格局...
  2. 个人项目框架搭建 -- 缓存接口与实现
  3. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结
  4. C语言,去你的策略模式!
  5. 雪色光晕(计算几何+暴力)
  6. 群晖服务器自动同步到本地电脑,安装群晖Drive,实现多台电脑文件同步
  7. 时频分析matlab实例,Matlab时频分析工具箱及仿真案例
  8. Lottie动画测试工具
  9. 用户画像标签体系建设指南
  10. 配置微软Azure Kinect DK 录制器k4arecorder
  11. 如何获取计算机网络地址,如何查看电脑获取到的IP地址?
  12. imchat视频聊天室 linux,基于Nuxt+Vant聊天模板|nuxt.js仿微信界面|红包|朋友圈
  13. php微信小程序毕业设计 php化妆品商城小程序毕业设计毕设作品参考
  14. 手把手教你如何通过大厂面试
  15. 瓶中阳光——雪莉之美
  16. 杂牌机搞机之旅(一)——获得root权限(刷入magisk)
  17. 根据经纬度计算两地距离
  18. 关于逸马驰骋兄转移数据库的一种方案(记录下)
  19. Git使用方法技巧大全
  20. 如何打造自己的个人移动知识库?不妨试试这个工具软件

热门文章

  1. segnet---训练
  2. 傻事大征集:进来晾晾你小时候干过的傻事!www.11xp.com
  3. hdu4565(矩阵快速幂)
  4. C语言飞机大战小游戏(2万字!完整精讲解版+源代码)
  5. 商城系统mysql数据表设计_购物商城数据库设计-商品表设计
  6. 2021年清北等重点高校都有哪些冬令营?最全汇总看这里!
  7. android短视频列表自动播放,手把手教你实现视频列表滚动自动播放-短视频列表滚动播放实战...
  8. git push报错: Push rejected
  9. 猜拳游戏 java_用java实现一个猜拳小游戏
  10. tplink服务器无响应dns,tplink路由器dns异常