注意题目要求返回森林中兔子的最少数量。
class Solution {
public:
int numRabbits(vector<int>& answers) {
if (answers.empty()) return 0;
int res = 0;
unordered_map<int, int> hash; //存储<数字, 说了这个数字的兔子数量>
for (int num : answers)
{
if (!hash.count(num) || hash[num] == 0) //没有记录或当前数字的兔子数量为0时
{
res += num + 1;
hash[num] ++ ; //当前数字的兔子数量自增1
}
else if (hash.count(num)) //已有记录就继续自增
hash[num] ++ ;
if (hash[num] == num + 1) //当兔子数量等于数字时,表示达到该种颜色所能代表的数量上限
hash[num] = 0; //重置兔子数量为零,若再遇到相同数字,需要开另一种颜色来存
}
return res;
}
};