题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array.length<2) {
return;
}
int result=0;
for(int i=0;i<array.length;i++){
result^=array[i];
}
int n=0;
int num=1;
int count=0;
while(result>0){
if((result&num)>0){
break;
}
num=num<<1;
count++;
}
int left=0;
int right=0;
for(int i=0;i<array.length;i++){
if(isBit1(array[i],count)){
left^=array[i];
}else{
right^=array[i];
}
}
num1[0]=left;
num2[0]=right;
}
boolean isBit1(int num,int n){
int temp=1;
while(n>0){
temp=temp<<1;
n--;
}
return (temp&num)!=0;
}
}