森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。
返回森林中兔子的最少数量
假设有y只兔子喊了有x个兔子和自己颜色一样 则至少会有 (y + x) / (x + 1) 种颜色(y除x向上取整) 至少有 颜色数 * (x + 1)只兔子
class Solution {
public int numRabbits(int[] answers) {
Map<Integer, Integer> count = new HashMap<Integer, Integer>();
for(int y : answers){
count.put(y, count.getOrDefault(y, 0) + 1);
}
int ans = 0;
for(Map.Entry<Integer, Integer> entry : count.entrySet()){
ans += (entry.getKey() + entry.getValue()) /( entry.getKey() + 1) * (entry.getKey() + 1);
}
return ans;
}
}