import java.util.*;
public class Solution {
    // Parameters:
    //    numbers:     an array of integers
    //    length:      the length of array numbers
    //    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;
    //                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++
    //    这里要特别注意~返回任意重复的一个,赋值duplication[0]
    // Return value:       true if the input is valid, and there are some duplications in the array number
    //                     otherwise false
    public boolean duplicate(int numbers[],int length,int [] duplication) {
      //数组范围为0 - n-1,每遍历到一个数字index,将index索引:array[index]+length
      //如若再有索引index,那么array[index]必大于等于length
      for(int i=0;i<length;i++){
          int index = numbers[i]%length;//获取当前元素要映射到的索引index
          if(numbers[index]>=length){
              duplication[0]=index;
              return true;
          }
          numbers[index]+=length;
      }
      return false;
      //hashmap方法
     /* Map<Integer,Integer> map = new HashMap<Integer,Integer>();
      boolean flag = false;
      for(int i=0;i<length;i++){
          if(!map.containsKey(numbers[i]))map.put(numbers[i],1);
          else{
              flag = true;
              duplication[0]=numbers[i];
              break;
          }
      }
      return flag;*/
    }
}