java中的异或 (^)

java中的异或 (^)

例子力扣
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1

示例 2:
输入: [4,1,2,1,2]
输出: 4

public static void main(String[] args) {
    
    
        TestWk testWk = new TestWk();
        int[] nums = {
    
    2,4,4,2,1};
        System.out.println(testWk.singleNumber(nums));

    }
    public int singleNumber(int[] nums) {
    
    
        int ans = nums[0];
        if (nums.length > 1) {
    
    
            for (int i = 1; i < nums.length; i++) {
    
    
                ans = ans ^ nums[i];
            }
        }
        return ans;
        //我们就是巧用异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。
    }

分析

a^b ^ a = b
因为两个一样的异或一下就是0,所以这个题刚刚好就是2n个一样的,用这个题来当异或的例子真不错。

猜你喜欢

转载自blog.csdn.net/weixin_45906830/article/details/112768139