//数组中重复的数字
//在一个长度为n的数组里所有数字都在0-n-1范围内,数组中有些数字是重复的,但不知道有几个数字是重复的,
//也不知道每个数字重复几次,请找出数组中任意一个重复的数字,
//如:输入长度为7的数组{2,3,1,0,2,5,3},输出第一个重复的数字为2
public class day {
public static void main(String[] args) {
int[] numbers = {2,3,1,0,2,5,3};
int length = 7;
int[] duplication = new int[1];
System.out.println(duplicate(numbers, length, duplication));
}
public static boolean duplicate(int numbers[],int length,int [] duplication) {
//数组为空,或者长度为0直接返回false
if(numbers == null || length ==0) {
return false;
}
for(int i = 0;i <length;i++) {
//数据不在长度范围内,直接返回false
if(numbers[i] < 0 || numbers[i] > length) {
return false;
}
for(int j = 0; j < length ; j++) {
while(numbers[j] != j) {
if(numbers[j] == numbers[numbers[j]]) {
duplication[0] = numbers[j];
return true;
}
int temp = numbers[j];
numbers[j] = numbers[temp];
numbers[temp] = temp;
}
}
}
return false;
}
}