题一:找出数组中重复的数组。
在一个长度为n的数组里的所有数字都在0~n-1的范围。数组中某些数字是重复的,但不知道有几个数字重复里,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
privat List<Integer> findAllRepeats(int[] arr) {
Pair<Integer, Integer>[] temp = new Pair[arr.length+1];
for (int i : arr) {
if (temp[i] != null) {
temp[i] = new Pair<>(i, temp[i].getValue()+1);
} else {
temp[i] = new Pair<>(i, 1);
}
}
List<Integer> ans = new ArrayList<>();
for (Pair<Integer, Integer> p : temp){
if (p!=null && p.getValue()>1) {
ans.add(p.getValue());
//System.out.println(p.getKey() + " repeats for " + p.getValue() + " times");
}
}
return ans;
}