MerMaid.

导航

【数组】找出数组中只出现过一次的两个数

【描述】数组中有两个数都只出现了一次,其余数都出现过两次,找出这两个数

【思路】

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;
}

  

  

posted on 2013-03-18 19:12  MerMaid.  阅读(105)  评论(0)    收藏  举报