public class 面试题40_数组中只出现一次的数字 {
/*
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
笔
*/
public static void main(String[] args) {
int[] a={2,4,3,6,3,2,5,5};
seprate(a);
}
public static void seprate(int[] a){
int k1=0;
int k2=0;
int count=a[0];
for (int i = 1; i < a.length; i++) {
count=a[i]^count;
}
int m=findFirst1(count);
for (int i = 0; i < a.length; i++) {
if(((a[i]>>m)&1)==1){
k1=k1^a[i];
}else{
k2=k2^a[i];
}
}
System.out.println("这两个数是: "+k1+" "+k2);
}
public static int findFirst1(int n){
int count=1;
while((n&1)==0){
n=n>>1;
count++;
}
return count-1;
}
}