https://leetcode.com/problems/rabbits-in-forest/description/
题目大意:数列a[i]表示和第i个兔子颜色相同的其他兔子的个数,问最少有多少只兔子。
解题思路:先排序,统计相同a[i]的个数,将相同数字a按照a+1个一组分组,例如 2 2 2 2 2现在有5个2,分成两组,其中3个2可以看成一组颜色相同的兔子,另外两个是另外一组。
class Solution { public int numRabbits(int[] answers) { int n = answers.length; if(n==0) return 0; int[] a= new int[1000]; Arrays.sort(answers); int pre= answers[0]; a[answers[0]]++; int res = 0; for(int i=1;i<n;i++) { a[answers[i]]++; if(answers[i]==pre) continue; else { if(pre==0) res+=a[pre]; else { res+= a[pre] / (pre+1) *(pre+1); if(a[pre] % (pre+1)!=0) res+=(pre+1); } pre = answers[i]; } } if(pre==0) res+=a[pre]; else { res+= a[pre] / (pre+1) *(pre+1) ; if(a[pre] % (pre+1)!=0) res+=(pre+1); } return res; } }