java的异或运算符(^)

异或运算(^)

异或是一个数学运算符,应用于逻辑运算。
异或运算是一种二进制运算:

1^1=0
0^0=0
1^0=1
0^1=1

异或运算法则

  • a ^ b = b ^ a
  • a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c
  • d = a ^ b ^ c 可以推出 a = d ^ b ^ c
  • a ^ b ^ a = b

算法应用

有序数组中的单一元素

给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。
请你找出并返回只出现一次的那个数。

解答:
相同的两个数异或=0,异或运算符又具有交换性。
我们可以通过将数组中的所有整数进行异或运算,由于异或的性质,最后得出的值即为只出现一次的那个数
class Solution {
    public int singleNonDuplicate(int[] nums) {
        int result = nums[0];
        for (int i = 1; i < nums.length; i++) {
            result = result ^ nums[i];
        }
        return result;
    }
}

小Tips

偶数+1=奇数-1=整数^1

posted @ 2022-02-24 14:33  阿步呦  阅读(1363)  评论(0编辑  收藏  举报