java - 我可以使用递归来简化它吗?
问题描述
不确定我是否可以简化两个 for 循环,因为它们相似?任何帮助表示赞赏。我可以使用递归吗?
public static Integer Search(int array[])
{
//Loop through original array
for(int compare : array)
{
int count = 0;
//Will loop through array and compare each integer to compare
for(int currentInt : array)
{
//Comparing currentInt to compare
if (currentInt == compare)
count += 1;
//If the currentInt is in the array twice
if (count == 2)
return currentInt;
}
}
return null;
}
解决方案
如果您希望获取数组中出现两次的第一个数字,您可以创建数字及其计数的映射,当计数为 2 时中断执行流程。
就像是
public Integer search(int[] array) {
Map<Integer, Integer> counts = new HashMap<>();
for (int a : array) {
int count = counts.getOrDefault(a, 0);
count++;
if (count == 2) {
return a;
}
counts.put(a, count);
}
return null;
}
推荐阅读
- javascript - 从js中的xlsx文件中读取整行
- javascript - Google Script Link PDF:异常:参数不能为空:contentType(第 82 行,文件“代码”)
- python - 如何使用python在条件下处理查询
- powershell - 为什么 Export-Csv 不能与 PSCustomObject 一起使用?
- python - Keras 生成器输出与直接文件读取产生截然不同的模型结果
- python - 我正在尝试从特定格式的字符串中提取日期和时间
- docker - Gitlab docker run 无法挂载 ${CI_PROJECT_DIR} 文件夹
- r - 从数据框 R 创建加权邻接矩阵
- javascript - 如果输入的数字总和具有特定值(JS),则禁用按钮
- kotlin - DiffUtil.ItemCallback - 定义为伴随对象还是类?