解题思路:借助集合

设一个集合,用于存放已经遍历过且没有重复的元素,便于之后遍历时判断是否有重复。
做法如下:

  • 遍历数组,若集合不包含该元素,加入集合
  • 若集合包含该元素,表示该元素之前有被访问过,且是第一个重复的元素,直接返回
  • 最后若都没有重复的,表示数组中无重复元素
          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;
          }