文章目录
- 1. 题目
- 2. 解题
1. 题目
森林中,每个兔子都有颜色。
其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。
我们将这些回答放在 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] 范围内的整数。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/rabbits-in-forest
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 思维题
class Solution {
public:int numRabbits(vector<int>& answers) {unordered_map<int,int> m;for(auto a : answers)m[a+1]++;//有a+1个人一个颜色,多少个兔子这么说了int ans = 0;for(auto &mi : m){int tellnum = mi.first;//这么多兔子是一种颜色int people = mi.second;//有多少个兔子这么说了//贪心,让他们组成同一种颜色,如 5个兔子说有5个兔子颜色一样// 那么这5个兔子组成一种颜色即可,答案是5只// 6个兔子说有5个兔子颜色一样,把5个颜色一样的拿走// 还剩下的1只兔子肯定是别的颜色,他还有4个同伴没有回答,答案是10只ans += ceil(double(people)/tellnum)*tellnum;}return ans;}
};
4 ms 8.4 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!