最近碰到一个有意思的问题,如果1000001个数中,有一个是重复的,如何找出这个数。楼主只想到了两种解决方案,你们还有别的么?如果这个数据很大呢?
integer.MAX_VALUE 2147483647(21亿)
LONG.MAX_VALUE 922,3372,0368,5477,5807(9亿亿) 这是jdk8 里面的数值大小,应该不会变的吧!
尽量考虑时间复杂度。
/**
*如果1000001个数中,有一个是重复的,如何找出这个数。
* Created by humdeef.
*/
public class FindNum {
public static void main(String[] args) {
int a[]={1,2,3,4,5,6,7,8,2};
Set set = new HashSet();
for(int i=0;i<a.length;i++){
if(!set.add(a[i])){//利用set保存的值都是不重复的特性
System.out.println("我就是那个重复的值:"+a[i]);
break;
}
}
for(int i=0;i<a.length;i++){
for(int j =i+1;j<a.length;j++){
if(a[i]==a[j]){
System.out.println("我就是那个重复的值:"+a[i]);
return;
}
}
}
}
}