思路:注意题干信息,数组中的数不会大于数组长度,于是可以考虑将遇到的数,调换位置到对应索引处,然后进行下一次处理,若读出当前值和对应索引值一致,即找到重复可以返回
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @return int整型
*/
public int duplicate (int[] numbers) {
// write code here
int len = numbers.length;
int i = 0;
while(i<len){
if(numbers[i]==i){
i++;
continue;
}
if(numbers[i]==numbers[numbers[i]]){
return numbers[i];
}
int temp=numbers[i];
numbers[i] = numbers[temp];
numbers[temp] = temp;
}
return -1;
}
}