import java.util.Arrays;
/*
* 请找出数组中任意一个重复的数字。
* 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},
* 那么对应的输出是第一个重复的数字2。
*/
public class Duplicate {
//算法一:复杂度O(n^2)
public boolean duplicate(int numbers[], int length, int [] duplication) {
if(length == 0) {
duplication[0] = -1;
return false;
}
Arrays.sort(numbers);
boolean flag = false;
for(int i = 0;i < length - 1; i++) {
for(int j = i + 1;j < length;j ++) {
if(numbers[i] == numbers[j]) {
duplication[0] = numbers[i];
flag = true;
break;
}
}
if(flag) break;
}
return flag;
}
//算法二:复杂度O(n)
public boolean duplicate2(int numbers[],int length,int [] duplication) {
if(length == 0) {
duplication[0] = -1;
return false;
}
StringBuffer sb = new StringBuffer();
for(int i = 0;i < length; i++) {
sb.append(numbers[i]);
}
boolean flag = false;
duplication[0] = -1;
for(int i = 0;i < length; i++) {
//StringBuffer功能:找元素字符出现的索引位置(第一次出现和最后一次出现)
if(sb.indexOf(numbers[i] + "") != sb.lastIndexOf(numbers[i] + "")) {
flag = true;
duplication[0] = numbers[i];
break;
}
}
return flag;
}
public static void main(String[] args) {
int numbers[] = {2,4,3,1,4};
int duplication[] = new int[1];
System.out.println(new Duplicate().duplicate2(numbers, numbers.length, duplication));
}
}
《剑指offer》-请找出数组中任意一个重复的数字
最新推荐文章于 2021-07-16 15:49:36 发布