题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(null==array||array.length<2) return;
int or=0;
for(int i=0;i<array.length;i++)
or=or^array[i];
int index=findFirstOne(or);
for(int i=0;i<array.length;i++){
if(isOne(array[i],index)){
num1[0]^=array[i];
}
else{
num2[0]^=array[i];
}
}
}
int findFirstOne(int num){
int index=0;
while(((num&1)==0)&&index<32){
num=num>>1;
index++;
}
return index;
}
//判断元素某位上是否为 1
boolean isOne(int num,int index){
num=num>>index;
return (num&1)==1;
}
}