刚刚那个代码,我粘过去好像是乱的,重新粘一下:
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;
}
}