面试题 40 数组中只出现一次的数字

int findfirstOne(int number)
{
	int index = 0;
	while(( number&1 ==0) && (index < 8 * sizeof(int))){
		number >>= 1;
		index++;
	}
	return index;
}
bool isBit1(int number, int index){
	return (number>>index)&1 ;
}
void FindAppearOnce(int data[], int length, int &num1, int &num2)
{
	if(data == NULL || length <1) return ;
	
	int resultor = 0;
	for( int i = 0;  i < length; ++i)
		resultor ^= data[i];
		
	int index = findfirstone(resultor);
	numb1 = 0; numb2 = 0;
	
	for( int i = 0 ; i< length ; ++i)
	{
		if(isbit1(data[i], index))
			numb1 ^= data[i];
		else
			numb2 ^= data[i];
	}


}

 

posted @ 2013-09-17 19:23  冰点猎手  阅读(175)  评论(0)    收藏  举报