(哈希表)
//每次hash存入的是当前颜色的数目(key)和允许后续有相同颜色的数目
//比如有5个颜色同时为红色,这时候我们最小数目可以有6个为红色的。
//所以当我们每次遇到数字5(红色),我们就让hash表里面的红色的允许的数目-1
//当减到为0的时候表示已经有6个了,如果超过了6个这时候我们就需要设为另一种颜色。
Java 代码
class Solution {
public int numRabbits(int[] answers) {
if(answers.length == 0) return 0;
Map<Integer,Integer> map = new HashMap<>();
int res = 0;
for(int x : answers){
if(map.containsKey(x) && map.get(x) > 0)
map.put(x,map.get(x) - 1);
else{
res += x + 1;
map.put(x,x);
}
}
return res;
}
}