使用有序Map进行判断
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) { Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>(length); if(numbers==null || numbers.length==0){ return false; } for (int i = 0; i < numbers.length; i++) { if (!map.containsKey(numbers[i])) { map.put(numbers[i], 1); } else { int value = map.get(numbers[i]); map.put(numbers[i], ++value); } } for (Map.Entry<Integer, Integer> entry : map.entrySet()) { Integer key = entry.getKey(); Integer value = entry.getValue(); if (value != 1) { duplication[0] = key; return true; } } return false; } }