如何从乱序的1001个整数中找出唯一的两个相同的数!求大神解答
可以用额外的存储空间么?可以的话就比较容易
用hashset来计算,只要遍历一次就可以了;
hashset的add方法返回值来判断原有整数是否存在,不存在会返回true,存在返回false。
存在代表着找到了重复的数字。
就是用for循环来查找,你还有什么其他的限制的条件吗?
package day0424_乱序数组查找相同值;
import java.util.Scanner;
public class TestSort {
public static void main(String[] args) {
int [] a = new int [1001];
for(int i=0;i<1001;i++){
System.out.println("请输入1001个整数:");
a [i] = new Scanner(System.in).nextInt();
}
int num = 0;
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[j]==0){
break;
}
if(a[i]==a[j]){
//System.out.println(a[i]);
num = a[i];
System.out.println("你要查找的重复值为"+num+",分别是第"+(i+1)+"个,和第"+(j+1)+"个。");
break;
}
}
if(num!=0){
break;
}
}
}
}
如果不考虑效率的话,两个for嵌套就好了 = =。
假设值在数组中 a[1001]中= =
for(int i = 0;i < 999;i++)
for(j = 1;j < 1000;j++)
if(a[i] = a[j])
return 1;
就是效率低了点~~~~
从二进制的角度来考虑,1000个数字两两不同,同或运算,则为0,则剩下的那个数就是你要找的。