在一个长度为 n 的数组 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,请找出数组中任意一个重复的数字。
public static int findRepeatNumber(int[] nums) {
//找出nums[]中的最大数
int maxNumber = 0;
/**
* 当以nums[]的数值作为arr[]的索引时,
* 如果nums[]的元素的最大值大于arr[]的长度,
* 有可能会发生数组越界访问,
* 所以arr[]的长度至少要大于等于(maxNumber+1)
*/
for (int i = 0; i < nums.length; i++) {
if(nums[i]>maxNumber){
maxNumber=nums[i];
}
}
int[] arr = new int[maxNumber + 1];
for (int i = 0; i < nums.length; i++) {
arr[nums[i]]++;
//返回nums[]中第一个重复的数
if (arr[nums[i]]>1){
return nums[i];
}
}
return 0;
}