首页 > 其他 > 详细

67森林中的兔子(781)

时间:2020-09-10 16:35:31      阅读:74      评论:0      收藏:0      [点我收藏+]

作者: Turbo时间限制: 1S章节: 哈希表

晚于: 2020-08-19 12:00:00后提交分数乘系数50%

截止日期: 2020-08-26 12:00:00

问题描述 :

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

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

 

示例:

输入: answers = [1, 1, 2]

输出: 5

解释:

两只回答了 "1" 的兔子可能有相同的颜色,设为红色。

之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。

设回答了 "2" 的兔子为蓝色。

此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。

因此森林中兔子的最少数量是 5: 3 只回答的和 2 只没有回答的。

 

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

输出: 11

 

输入: answers = []

输出: 0

 

 

输入说明 :

首先输入answers数组的长度n,n<=1000

然后输入n个整数,以空格分隔,每个整数在 [0, 999] 范围内

 

 

输出说明 :

输出一个整数

输入范例 :

输出范例 :

#include <iostream> 
#include <vector>
#include <unordered_map>
using namespace std;

class Solution {
public:
    int numRabbits(vector<int>& answers) 
    {
        unordered_map<int,int> map;
        for(int i=0;i<answers.size();i++)
        {
            map[answers[i]]++;
        }
        int res=0;
        for(auto m:map)
        {
            if(m.second%(m.first+1)==0)
            {
              res+=(m.second/(m.first+1))*(m.first+1);
            //  cout<<"hahhh"<<m.first<<" "<<m.second<<" "<<m.second/(m.first+1)<<" "<<res<<endl;
            }
            else
            {
                res+=((m.second/(m.first+1))+1)*(m.first+1);
            //    cout<<"lll"<<m.first<<" "<<m.second<<" "<<((m.second/(m.first+1))+1)<<" "<<res<<endl;
            }
        }
        return res;
    }
};
int main()
{
    int n,data,k;
    vector<int> nums;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>data;
        nums.push_back(data);
    }
    int res=Solution().numRabbits(nums);
    cout<<res;
    return 0;
}
// 用hash来统计answers中每个数字出现的次数; 然后就是开始处理哈希表里面的统计结果了;
// 例如, 5出现了8次, 那么至少得2*(5+1)只兔子; 如果5出现了6次呢? 至少需要6只兔子; 如果5出现了3次呢? 还是6只兔子;
// 当val出现了t次, 如果t%(val+1) == 0, 
//需要(t/(val+1))*(val+1)只兔子; 如果没有整除, 则至少需要(t/(val+1)+1)*(val+1)只兔子;

 

67森林中的兔子(781)

原文:https://www.cnblogs.com/zmmm/p/13645626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!