解题思路:借助集合
设一个集合,用于存放已经遍历过且没有重复的元素,便于之后遍历时判断是否有重复。
做法如下:
- 遍历数组,若集合不包含该元素,加入集合
- 若集合包含该元素,表示该元素之前有被访问过,且是第一个重复的元素,直接返回
- 最后若都没有重复的,表示数组中无重复元素
public boolean duplicate(int numbers[],int length,int [] duplication) { if (numbers == null || numbers.length == 0) { return false; } Set<Integer> set = new HashSet<>(); for (int i = 0; i < numbers.length; i++) { if (set.contains(numbers[i])) { duplication[0] = numbers[i]; return true; } set.add(numbers[i]); } return false; }