
在一个长度为n的数组里的所有数字都在n~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public class { private static int findDuplicateNum(int[] arr) { if (arr == null || arr.length == 0) { return -1; } for (int i = 0; i < arr.length; i++) { while (arr[i] != i) { if (arr[i] == arr[arr[i]]) { return arr[i]; } else { int temp = arr[i]; arr[i] = temp; arr[temp] = temp; } } } return -1; } public static void main(String[] args) { int[] arr = {2, 3, 1, 0, 2, 5, 3}; System.out.println(findDuplicateNum(arr)); } }
|
近期评论