数组中重复的数字(二)
题目:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但是不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。
分析:因为不能改变数组,所以可以使用一个辅助数组
public class Solution {
public static int getDuplication(int[] arr) {
if (arr == null || arr.length == 0) {
return -1;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] < 1 || arr[i] >= arr.length) {
return -1;
}
}
int[] tempArr = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
if (arr[i] == tempArr[arr[i]]) {
return arr[i];
}
tempArr[arr[i]] = arr[i];
}
return -1;
}

浙公网安备 33010602011771号