• 刷题-力扣-781. 森林中的兔子


    781. 森林中的兔子

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/rabbits-in-forest/
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 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] 范围内的整数。

    题目分析

    1. 根据题目描述假设有x只兔子回答y,那么至少有(x+y)/(y+1)中颜色
    2. 相同颜色的兔子有(x+y)/(y+1)*(y+1)只

    代码

    class Solution {
    public:
        int numRabbits(vector<int>& answers) {
            if (answers.size() < 1) return 0;
            int sum = 0;
            vector<int> ansSum(1000, 0);
            for (auto a : answers) ansSum[a] += 1;
            for (int i = 0; i < ansSum.size(); ++i) {
                if (ansSum[i] > 0) sum += (ansSum[i] + i) / (i + 1) * (i + 1);
            }
            return sum;
        }
    };
    
  • 相关阅读:
    一:多线程--多线程简单介绍
    五:网络--多线程断点下载
    四:网络--NSURLConnection基本使用
    三:网络--数据安全/加密
    二:网络--GET请求和POST请求
    一:网络--HTTP协议
    源代码管理工具GIT
    MyBatis 多参问题
    jquery 事件
    jquery点击事件
  • 原文地址:https://www.cnblogs.com/HanYG/p/14616770.html
Copyright © 2020-2023  润新知