给出2n+1个数
其中有n个数是成对出现的
找出里面只出现了一次的那个数
假设 这2n+1个数是int的,则借助两个临时变量可以实现目的
假设数据存放在int Data[2*N+1]里
int Find(int Data[],int N)
{
int i,int j;
j=0;
for(i=0;i <2*N+1;) j ^=Data[i++];
return j;
}
原理,同一个数跟本身异或结果为0,而一个数跟0异或为它本身。
不用中间变量交换数据
void swap1(int& a,int& b)
{
a^=b;
b^=a;
a^=b;
}
void swap2(int& a,int& b)
{
a=a+b;
b=a-b;
a=a-b;
}
void swap3(int& a,int& b)
{
a=a-b;
b=a+b;
a=b-a;
}