由于所有数字都在 0~n-1 的范围内,因此让使用原地交换的方式numbers[i]放到下标为numbers[i]的位置,在交换前判断该下标位置是否已经有元素的值等于下标值,如果有则说明不止一个元素。比使用hashset速度更快
class Solution {
public int findRepeatNumber(int[] nums) {
for (int i = 0; i < numbers.length; i++){
int temp = numbers[i];
whlie(i != temp){
if(temp == numbers[temp])
return temp;
else{
numbers[i] = numbers[temp]
numbers[temp] = temp;
temp = numbers[i];
}
}
}
// write code here
return -1;
}
}