📅  最后修改于: 2023-12-03 15:11:15.682000             🧑  作者: Mango
这个Java程序可以帮助你从一个含有重复元素的数组中查找哪一个元素是丢失的。该程序使用了HashMap来记录数组中每个元素出现的次数,并遍历该数组来查找丢失的元素。
import java.util.HashMap;
import java.util.Map;
public class MissingElementFinder {
public static int findMissingElement(int[] arr) {
Map<Integer,Integer> countMap = new HashMap<>();
for(int num : arr) {
countMap.put(num, countMap.getOrDefault(num, 0) + 1);
}
for(int i = 1; i <= arr.length; i++) {
if(!countMap.containsKey(i)) {
return i;
}
}
return -1;
}
}
上面的Java代码首先创建了一个Map对象来记录数组中每个元素出现的次数。然后,它遍历整个数组,将每个元素添加到Map中。Map中的key是数组中的元素,value是该元素在数组中出现的次数。
接下来,这个程序会遍历从1到数组长度的所有数字。如果Map中没有包含该数字,那么这个数字就是丢失的数。如果Map中包含了从1到数组长度之间的所有数字,则返回-1,表示没有丢失的元素。
你可以使用以下代码来测试该程序:
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int missingElement = MissingElementFinder.findMissingElement(arr);
System.out.println("丢失的元素是:" + missingElement);
如果该数组中没有任何丢失的元素,则会输出如下消息:
丢失的元素是:-1
否则,该程序会输出丢失的元素的数字。
该程序可以很轻松地扩展到处理更复杂的情况,例如对数组进行排序或在含有重复元素的二维数组中查找丢失的元素等。