[Math_Medium] 781. Rabbits in Forest

原题: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;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 8,393评论 0 13
  • -01- 小满是我的大学室友。 2008年,我以压线的分数,考进省内一所二流大学,内心欢呼雀跃得像个拿到糖果的小孩...
    猪小浅阅读 10,061评论 116 263
  • 面临过很多无助的时刻,当面临无助时随之而来的是深深的无力感,整个人非常疲乏,无力,全身软绵绵的,提不起劲儿。 更多...
    九忆之城阅读 4,026评论 0 0
  • 小核桃第一次到美吉姆上课时,是整个中心最小的小朋友,只有2个多月。家人朋友都不理解为什么这么小的孩子就上早教...
    核桃麻麻阅读 1,760评论 0 1
  • 运行结果 range(1, 10)Ilikepython0 I1 like2 python存在No1 ...
    丽雁解阅读 1,693评论 0 1

友情链接更多精彩内容