目录
1.异或在数组两元素交换中的妙用
eor存储着两个元素异或后的结果,异或:二进制运算中同一位如果相同则异或后为0,不相同则异或后为1。 a:1101,b:1001 异或后为 eor:0100 。 b=a^eor,a=b^eor。
void swap(int arr[],int i,int j)
{
//不能修改同一位置不让会使其异或为0
if(i!=j) {
int eor = arr[i] ^ arr[j];
arr[i] = eor ^ arr[i];
arr[j] = eor ^ arr[j];
}
}
Example:找到数组中1个奇数次的数。 12323
void find_1(int []arr)
{
int eor=0;
for (int i = 0; i < sizeof(arr)/sizeof(int); ++i)
{
eor^=arr[i];
}
cout<<"出现奇数次的数为:"<<eor<<endl;
}
Example:找到数组中2个奇数次的数。 12312313