【数组】找出数组中只出现过一次的两个数
【描述】数组中有两个数都只出现了一次,其余数都出现过两次,找出这两个数
【思路】
bool JudgeBit(int num,int index){
num=num>>index;
if(num&1==1)
return true;
else
false;
}
void FindTowNumber(int array[],int len){
int resultOr=0;
//resultOr is xor of all numbers
for(int i=0;i<len;i++)
resultOr^=array[i];
int differentBit=0;
while((resultOr&1)==0){
resultOr=resultOr>>1;
differentBit++;
}
int num1=0,num2=0;
//array divided two parts
for(int i=0;i<len;i++){
if(JudgeBit(array[i],differentBit))
num1^=array[i];
else
num2^=array[i];
}
cout<<num1<<endl;
cout<<num2<<endl;
}
int main(){
int array[]={1,2,3,4,5,8,1,2,3,4};
int len=sizeof(array)/sizeof(int);
FindTowNumber(array,len);
return 0;
}
浙公网安备 33010602011771号