781.森林中的兔子
1.思路
-
假设answers数组某一位值为2(x)——>除了这只兔子以外,还有2(x)只兔子和它拥有一样的颜色,即有3(x+1)只兔子拥有一样的颜色
-
-
若值为2的兔子不超过3(x+1)只——>该这种颜色的兔子数量保持为3(x+1)
-
-
-
若值为2的兔子出现第4(x+2)只,重置这只兔子为第1只——>该颜色的兔子数量变为3+3=6((x+1)+(x+1))
-
-
-
若值为2的兔子继续出现,按前两条循环
-
-
2.LeetCode代码
class Solution {
public:
int numRabbits(vector<int>& answers) {
int a[1000] = {0};
int sum = 0;
for(int i = 0; i < answers.size(); i++) //遍历answers数组
{
if(!a[answers[i]] || (a[answers[i]] == answers[i] + 1)) //当某值还未出现过或该值已经存满时
{
a[answers[i]] = 1; //重置该位
sum = sum + answers[i] + 1; //更新数量
}
else if(a[answers[i]] < answers[i] + 1) //当某值已经出现过且出现次数还未存满时
a[answers[i]]++;
}
return sum;
}
};