数组中重复的数字
数组中重复的数字
http://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8
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;*/ } }