思路:注意题干信息,数组中的数不会大于数组长度,于是可以考虑将遇到的数,调换位置到对应索引处,然后进行下一次处理,若读出当前值和对应索引值一致,即找到重复可以返回


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;
    }
}