题解 | #数组中重复的数字#
数组中重复的数字
http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
public int duplicate (int[] numbers) { HashMap<Integer,Boolean> map=new HashMap<>();//先建立一个HashMap,它存储的是双列数据,即键值和值是一一对应的,如果一个数字重复了,那么可以将原本是True的值改成False.再根据键值进行增强for循环来找出value是false的,那么就是重复的键值对应的value. for(int i=0;i<numbers.length;i++){ map.put(numbers[i] ,!map.containsKey(numbers[i]) ); }//刚开始把数组的数字put进map的时候,value初始值都是True,那么一旦发现重复,会找到那个key覆盖原始的value为false //遍历HashMap集合 // Set nums=map.keySet();//用keySet方法可以得到map的键值的Set集合 for(Integer k: map.keySet(){ if(!map.get(k)) return k; } return -1; }