// 程序员面试100题之34找出数组中两个只出现一次的数字.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int arr[]={1,3,2,5,4,9,8,6,7,4,6,8,1,9,5,3};
int sum=0;
for (int i=0;i<16;i++)
{
sum=sum^arr[i];
}
int one=1;
while((sum&one)==0)// inside bracket is necessary
{
one=one<<1;
}
int sumpart1=0,sumpart2=0;
for (int i=0;i<16;i++)
{
if ((arr[i]&one)==0)
{
sumpart1=sumpart1^arr[i];
}
else
{
sumpart2 = sumpart2^arr[i];
}
}
cout<<sumpart1<<endl;
cout<<sumpart2<<endl;
system("pause");
return 0;
}
位运算博大精深呀!
程序员面试100题之34找出数组中两个只出现一次的数字
最新推荐文章于 2020-12-24 19:14:07 发布