刚刚那个代码,我粘过去好像是乱的,重新粘一下: public class Test04 { public static void main(String[] args) { int[] arr = {0,3,1,2,5,4}; long start = System.currentTimeMillis(); List repeatNumber = getRepeatNumber1(arr); long end = System.currentTimeMillis(); System.out.println(repeatNumber); System.out.println(end-start); } public static List<Integer> getRepeatNumber1(int[] arr){ List<Integer> list = new ArrayList<>(); //判断数组是否为空 if(arr == null || arr.length == 0){ list.add(-1); return list; } //通过循环遍历数组中的元素 for(int i =0;i<arr.length;){ //判断元素是否合法 if(arr[i] < 0 || arr[i] >= arr.length){ list.add(-1); return list; } if(arr[i] == i){ i++; }else { if(arr[i] == arr[arr[i]]){ if(!list.contains(arr[i])){ list.add(arr[i]); }else { i++; } } else { int temp = arr[i]; arr[i] = arr[arr[i]]; arr[temp] = temp; } } } if(list.size()==0){ list.add(-1); return list; }else { return list; } } public static List<Integer> getRepeatNumber2(int[] arr){ List<Integer> list = new ArrayList(); for (int i = 0;i<arr.length;i++){ for (int j = i+1 ;j<arr.length;j++){ if(arr[i] == arr[j]){ if(!list.contains(arr[i])){ list.add(arr[i]); } break; } } } return list; } }