一个数组中,除两个不同的数字外,两两相同,找到两个不同的数字,输出

#include 
 
/* 一个数组中,除两个不同的数字外,两两相同,找到两个不同的数字,输出

 *  数组的数,两两相与,然后找到第一个为1的比特位,依据在该位上数值的不同,按位与操作,分成两类

 *  每一类都两两相与,得到两个不同的数。

*/

using namespace std;

int first_1_bite(int a)
{
	int ret = 0x1;
	
	while( a & ret == 0)
	{
		ret = 1 << ret;
	}
	
	return ret;
}

void find_diff(int *array, int n, int *pa, int *pb)
{
	int ret = 0;
	int flag = 0;
	*pa = 0;
	*pb = 0; 
	
	for(int i=0; i

 

你可能感兴趣的:(C/C++,试题)