题目:
在一个长度为n的数组里的所有数字都在0-n-1的范围内,数字中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
解答:
1 public class Solution { 2 3 public static boolean duplicate(int arr, int n, int dup) { 4 if(arr == null || n <= 0) { 5 return false; 6 } 7 8 for(int i = 0; i < arr.length; i++) { 9 if(arr[i] < 0 || arr[i] > n-1) {return false;} 10 } 11 12 for(int i = 0; i < arr.length; i++) { 13 14 while(arr[i] != i) { 15 if(arr[i] == arr[arr[i]]) { 16 dup = arr[i]; 17 retur true; 18 } 19 20 int temp = arr[i]; 21 arr[i] = arr[temp]; 22 arr[temp] = temp; 23 } 24 } 25 26 return false; 27 } 28 }