解题思路:
数组大小为2N,有一个元素重复了 N
次,其他元素都只出现了1次。所以遍历前A.length/2个元素一定有我们要找的元素,找到这A.length/2个元素中的最大值max,作为要创建的数组的大小,接下来的任务是遍历前A.length/2+1个元素,统计其中出现不止一次的元素,便是我们要找的元素。
代码实现如下:
class Solution {
public int repeatedNTimes(int[] A) {
int len=A.length;
int res=0;
int max=-1;
for(int i=0;i<=len/2;++i){
max=max>A[i]?max:A[i];
}
int[] arr=new int[max+1];
for(int i=0;i<=len/2+1;++i){
int cnt=arr[A[i]]++;
if(cnt>=1){
res=A[i];
break;
}
}
return res;
}
}