3.数组中重复的数字
- 题目描述:在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- 解题思路:遍历数组,判断索引与该索引上的值是否一样,如果不一样就判断以该值为索引的元素值,与该值是否一致,如果一样就重复,不一样交换他们使之归位
public boolean find(int[] arr, int[] duplication){
if(arr == null || arr.length == 0) return false;
for (int i = 0; i < arr.length; i++) {
while(i != arr[i]){
if(arr[i] == arr[arr[i]]){
duplication[0] = arr[i];
System.out.println(duplication[0]);
return true;
}
swap(arr, i, arr[i]);
}
}
return false;
}
private void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}