【Java算法】08_异或运算
异或运算:相同为0,不同为1
能长时间记住的概率接近0%
所以,异或运算就记成无进位相加!
异或运算的性质
1)0^N == N N^N == 0
2)异或运算满足交换律和结合率
如何不用额外变量交换两个数
// 交换i和j的值
public static void swap(int i, int j) {
i = i ^ j;
j = i ^ j;
i = i ^ j;
}
136. 只出现一次的数字
class Solution {
public int singleNumber(int[] nums) {
int eor = 0;
for(int i = 0;i<nums.length;i++){
eor ^= nums[i];
}
return eor;
}
}