题目:
在一个长度为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 }