关于异或使用的问题
最有效记法:无进位相加(相同为0,不同为1)
在交换两个数字时使用异或方法不需要创建额外变量。
注意事项:异或在用于数组中交换两个数字时,一定要判断不能为同一个数,即下标不能相同,否则会将这个数置为0添加进数组。
异或的扩展用法:
eg:数组中有一个数出现了奇数次,其他都出现了偶数次,如何找到这个出现了奇数次的数?
对于数组[1 2 2 3 2 2 1]中有一个数出现了奇数次,查找出现奇数次的数。
使用异或查找:定义变量eor=0,用eor异或数组中每一个数,即可得到这个出现奇数次的数。
class SearchOdd
{
public static void main(String[] args)
{
int[] arr={1,2,2,3,2,2,1};
int eor=0;
for(int i=0;i<arr.length;i++)
{
eor^=arr[i];
}
System.out.println(eor);
}
}