int mid = L + (( R - L ) >> 1)
异或 位运算 等同于 无进位 相加
0^N == N,
N ^ N == 0
无额外空间,交换a, b
b = abb =a
a= ab(abb) = b
a = a ^ b;
b = a ^ b;
a = a ^ b;
一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数。
用temp = 0 去异或 所有的数,得到的结果就是这个奇数次的数。
一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数。
首先用temp = 0 去异或 所有的数,得到的结果就是这个a^b。
因为a 不等于 b, 所以结果必不为0.
假设第四位上的值为1,那么a与b在第四位上就不同
用temp1去异或所有第四位上不为1的数,得到一个结果a
再用temp2去异或所有第四位上为1 的书,得到另一个结果b