781. 森林中的兔子

2023-11-09 02:11
文章标签 兔子 森林 781

本文主要是介绍781. 森林中的兔子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 🐇781. 森林中的兔子
  • 🐰解题思路
    • 🐹给兔子分组
    • 🐼计算公式
  • 🦘代码


🐇781. 森林中的兔子

森林中有未知数量的兔子。提问其中若干只兔子 “还有多少只兔子与你(指被提问的兔子)颜色相同?” ,将答案收集到一个整数数组 answers 中,其中 answers[i] 是第 i 只兔子的回答。

给你数组 answers ,返回森林中兔子的最少数量。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/rabbits-in-forest

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

🐰解题思路

🐹给兔子分组

在这里插入图片描述

先排序,让相同的兔子在一起

这样就可以让相同的兔子分组,组内自我消化

在这里插入图片描述

排序好了,我们要怎么计算出相同的兔子的数量呢,
我们发现第一种颜色有 4 只兔子的回答为 1
那么在第一种颜色中可以分为 2 只兔子为一组
因为 1 代表这除了自己还有另外一只兔子颜色相同
因此 2 只兔子为一组,因此第一种颜色的兔子有 4 只

到了第 2 种颜色
2 代表着除了自己还有 2 只兔子颜色相同
因此需要分成 3 只兔子为一组
但第二种颜色的兔子在数组中只有 2 只,无法凑齐 3 只
证明还有兔子没被调查,需要在额外补一只兔子,
因此第二种颜色的兔子数量为 3

在这里插入图片描述

同理可得,第三种颜色的兔子有 8 只
第四种颜色的兔子有 5 只,因为数组中只有 3 只,需要另外补 2 只,
第五种颜色的兔子有 6 只

🐼计算公式

变量 x 代表有多少只兔子颜色相同
c 代表当前颜色的兔子在数组中有多少只
如果当前数是 x,有 c 只,有几组?

在这里插入图片描述

我们以 7 个 3 为例子
3 代表除了自己有 3 只兔子颜色相同
因此 4 只兔子为一组
我们需要分出 2 组
因此为 7/4 向上取整
那么怎么向上取整
原本是 a/b
向上取整变为
(a+(b-1))/b

在这里插入图片描述

因此最后公式为((c+x)/(x+1))*(x+1),

🦘代码

class Solution {public int numRabbits(int[] answers) {int n=answers.length;if(answers==null||n==0){return 0;}Arrays.sort(answers);int x=answers[0];int c=1;int ans=0;for(int i=1;i<n;i++){if(x!=answers[i]){ans+=((c+x)/(x+1))*(x+1);x=answers[i];c=1;}else{c++;}}return ans+((c+x)/(x+1))*(x+1);}
}

这篇关于781. 森林中的兔子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373577

相关文章

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

兔子--Notification的使用

<span style="font-size:18px;color:#ff0000;"></span> <span style="font-size:18px;color:#ff0000;">使用步骤:</span><p><span style="font-size:18px;color:#ff0000;">1 获取通知管理器NotificationManager,它也是一个系统服务</sp

兔子--PendingIntent与Intent的区别

pendingIntent是一种特殊的Intent。 主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。 pendingIntent执行的操作实质上是参数传进来的Intent的操作, 但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。 主要的使用的地方和例子:通知Notificatio

兔子--The method setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent) from the type

notification.setLatestEventInfo(context, title, message, pendingIntent);     不建议使用 低于API Level 11版本,也就是Android 2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法。  Intent  intent = new Intent(

兔子--背景透明度设置

背景透明度设置:ee是透明度 android:background="#ee6c6c6c"

兔子--Android Support v4,Android Support v7,Android Support v13

Android Support Library package用于高版本的特性的向下兼容。 (fragement,ViewPager) Android Support v4:  这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的,eclipse新建工程时,都默认 带有了。 Android Support v7:  这个包是为了考虑照顾2.1及以上版本而设计的,

兔子--Android Support v4包丢失的解决办法

在开发中,Android Support v4包丢失的解决办法: Project->properties->Java Build Path->Libraries->Add External Jars 中加入sdk目录下的extras/android/support/v4/android-support-v4.jar (如果找不到,则需要用sdk manager下载andro

兔子--SDK,ADT,AVD,IDE,ADB

a:SDK(Software Development Kit):开发android应用所需要的开发工具的集合,包括库文件及工具。 b:ADT(Android Developer Tools):在Eclipse下开发工具的升级下载工具。adt只是一个eclipse的插件,里面可以设置 sdk路径. c:IDE:集成开发环境。IDE通常包括编程语言编辑器、自动建立工具、通常还包括调试

兔子--eclipse下载插件

eclipse菜单栏->help->adout ADT->Installation Details->找到要卸载的插件->选中->点击下方uninstall