• 异或运算


    异或运算  

    异或运算规则:0^0=0;   0^1=1;   1^0=1;   1^1=0。同值取零,异值取一。

    性质:1,交换律:a^b=b^a;  2,结合律:(a^b)^c=a^(b^c);  3, a^a=0, a^0=a;  4, a^b^b=a;

    Swap两数:a=a^b;  b=a^b;  a=a^b.

    一,给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 LeetCode268

     示例 1:

    输入: [3,0,1]
    输出: 2
    示例 2:

    输入: [9,6,4,2,3,5,7,0,1]
    输出: 8

    在此只考虑异或运算的方法。

    /*
    nums下标为0~n-1,nums值为0~n(missing),除missing和n外的数都出现了两次,用n与前2n个数取异或运算,得到的值即为missing。
    */
    public int missingNumber(int[] nums) { int missing = nums.length; for (int i = 0; i < nums.length; i++) { missing ^= i ^ nums[i]; } return missing; }

    二,给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 LeetCode136

    示例 1:

    输入: [2,2,1]
    输出: 1
    

    示例 2:

    输入: [4,1,2,1,2]
    输出: 4
    public int singleNumber(int[] nums) {
            int res = 0;
            for (int i = 0; i < nums.length; i++) {
                res ^= nums[i];
            }
            return res;
        }
  • 相关阅读:
    struct pack unpack
    读书笔记 第四章&第五章
    The Sieve of Eratosthens(爱拉托逊斯筛选法)
    2013年3月百度之星A题
    2013年3月百度之星B题
    好句子
    BFS 与 DFS
    记录本
    HDU 2028 如何计算最小公倍数?
    HDU 2015 偶数求和 解题报告
  • 原文地址:https://www.cnblogs.com/faded828x/p/13155409.html
Copyright © 2020-2023  润新知