zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 781 森林中的兔子(分析题)

    781. 森林中的兔子

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

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

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

    输入: answers = [10, 10, 10]
    输出: 11

    输入: answers = []
    输出: 0
    说明:

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

    class Solution {
            public int numRabbits(int[] answers) {
            Map<Integer,Integer> map = new HashMap<>();
            int num = 0;
            for (int answer : answers) {
                //如果存在当前的数量的话,那么我们可以认为这两个是一样的颜色
                if(map.containsKey(answer)&&map.get(answer)>0){
                    //然后给这个数量-1,因为是一样的了
                    //这里是因为,我第一次如果是6只,我已经加进去了,
                    //所以后面再出现相同的6只六次以内得话
                    //我是不需要计算的,因为前面我们已经放进去了
                    map.put(answer,map.get(answer)-1);
                }else {
                    //这里描述得是,我其他还有多少兔子和我颜色一样,
                    //所以这个颜色得兔子数是answer+1
                    num+=answer+1;
                    map.put(answer,answer);
                }
            }
            return num;
        }
    }
    
  • 相关阅读:
    hadoop 3.0.0 alpha3 安装、配置
    集群使用初步
    转 mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据
    java 内存溢出
    获取手机上安装的应用信息
    使apk具有system权限
    Android基础之sqlite 数据库简单操作
    转 Android:文件下载和写入SD卡学习小结
    Android判断Service是否运行
    Android 定时重复启动弹出窗口。
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946119.html
Copyright © 2011-2022 走看看