[Math_Medium] 781. Rabbits in Forest
阿新 • • 發佈:2018-08-21
-i lee 兔子 i++ rest num leetcode () 分析
原題:781. Rabbits in Forest
題目大意:
森林裏每只兔子報告說有多少只兔子和它的顏色一樣,求森林裏最少有幾只兔子?
解題思路:
首先確定有多少只兔子的說法相同,假設有 a[i] 只兔子都說和它顏色相同的兔子有 i 只,那麽要分析 a[i] 與 i 的關系。比如說,3只兔子說和它同色的兔子有10只,那麽至少有11兔子;如果8只兔子說它同色的兔子有10只,那麽至少有11只兔子;如果10只兔子說和它同色的兔子有10只,那麽至少有11只兔子;如果有11只兔子都說和它同色的兔子有10只,那麽至少有11只兔子(每只兔子和另外10只同色);如果有12只兔子都說和它同色的兔子有10只,那麽至少有22只兔子(首先前面11只相互說有10只和自己同色,第十二只需要新增10來與之配對);
所以通過上面的分析:如果 a[i]%(i+1)!=0,那麽就需要(a[i]/(i+1)+1)*(i+1);否則就需要a[i]只
代碼:
class Solution{ public: int numRabbits(vector<int>& answers){ if(answers.size()==0) return 0; int sum=0; int i=0; int a[1000]={0}; for(i=0;i<answers.size();i++) a[answers[i]]++; for(i=0;i<1000;i++) if(a[i]%(i+1)) sum+=((a[i]/(i+1)+1)*(i+1)); else sum+=(a[i]); return sum; } };
[Math_Medium] 781. Rabbits in Forest