Java实现 LeetCode 781 森林中的兔子(分析题)
2023-09-14 08:58:01 时间
781. 森林中的兔子
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。
返回森林中兔子的最少数量。
示例:
输入: answers = [1, 1, 2]
输出: 5
解释:
两只回答了 “1” 的兔子可能有相同的颜色,设为红色。
之后回答了 “2” 的兔子不会是红色,否则他们的回答会相互矛盾。
设回答了 “2” 的兔子为蓝色。
此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。
因此森林中兔子的最少数量是 5: 3 只回答的和 2 只没有回答的。
输入: answers = [10, 10, 10]
输出: 11
输入: answers = []
输出: 0
说明:
answers 的长度最大为1000。
answers[i] 是在 [0, 999] 范围内的整数。
class Solution {
public int numRabbits(int[] answers) {
Map<Integer,Integer> map = new HashMap<>();
int num = 0;
for (int answer : answers) {
//如果存在当前的数量的话,那么我们可以认为这两个是一样的颜色
if(map.containsKey(answer)&&map.get(answer)>0){
//然后给这个数量-1,因为是一样的了
//这里是因为,我第一次如果是6只,我已经加进去了,
//所以后面再出现相同的6只六次以内得话
//我是不需要计算的,因为前面我们已经放进去了
map.put(answer,map.get(answer)-1);
}else {
//这里描述得是,我其他还有多少兔子和我颜色一样,
//所以这个颜色得兔子数是answer+1
num+=answer+1;
map.put(answer,answer);
}
}
return num;
}
}
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- java字符串的拆分_Java中的字符串分割 .
- java怎么调用.asmx_Java调用Webservice(asmx)的例子
- java 取余 小数_Java小数取余问题求助「建议收藏」
- java 异步调用接口_Java接口异步调用[通俗易懂]
- java 实现多态_Java多态的实现原理
- java冒泡排序代码_Java冒泡排序
- java笛卡尔积算法_Java 笛卡尔积算法的简单实现
- java事务的使用_Java跨库事务
- Java 零拷贝_java clone 深拷贝
- Java学习-如何编译适配java版本的jar包
- Java与MySQL的无缝衔接:实现高效数据操作(java中使用mysql)
- 管理Linux下Java版本管理:轻松实现多版本切换(linux下java版本)
- Java编程实现MySQL数据库连接(java连mysql数据库)
- 在Linux上实现Java程序的运行(linux运行java程序)
- 实现Java认证让你离Oracle更近一步(java认证oracle)
- 通往成功的道路通过Java考证Oracle获取更高的成就(java考证oracle)
- Oracle与Java的结合图像处理的快速开发(java图片oracle)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)