这个不需考虑集合的,用一下算法,复杂度为О(n²): public static int search(int[] a) { if (a != null && a.length > 0) { int len = a.length; for (int i = 0; i < len - 1; i++) { for (int j = i + 1; j < len; j++) { if (a[i] == a[j]) return a[j]; } } } return Integer.MAX_VALUE; }
直接用掉4G bit做标记更快O(N)
public static int search(int[] a) {
if (a != null && a.length > 0) {
int len = a.length;
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (a[i] == a[j])
return a[j];
}
}
}
return Integer.MAX_VALUE;
}
可以创建一个大小为100的数组,初始化所有的值为一个不可能的数,例如-1,然后把每个数放到对应的位置,如这个位置不为0,则说明这个数是重复的
这是用了hash的特点面试的时候,要尽量的问面试官各种条件,很多东西面试官是不会直接告诉你的,需要你去主动的沟通