zoukankan      html  css  js  c++  java
  • 异或相关知识

    基本性质

    0^0 = 1^1 = 0

    0^1 = 1^0 = 1

    x^0 = x 且 x^x = 0
    交换律:x^y = y^x
    结合律:(xy)z = x(yz)
    自反性:xyy = x

    [交换两个数]

    int swap(int &a,int &b)
    {
        a = a^b;
        b = a^b;
        a = a^b;
    }
    

    [A集合里拿掉数x得到B集合,求x]

    XOR(X)表示将X集合内所有的数做异或

    XOR(B)^XOR(A) = XOR(B)XOR(B)x = 0^x = x

    [集合A里只有数x出现1次,其余数全都重复出现2次,求x]

    xor(A) = xyyz^z = x(yyz^z) = x^0 = x

    [集合A[1n]里只有数x(1n之间)出现2次,其余数1次,求x]

    相当于x出现了3次,xxx = x,

    其他数出现了两次,x^x = 0

    public int FindDuplicate(int[] nums) {
     int res = 0;
     for(int i = 0; i < nums.Length; i++){
         res ^= nums[i];
         res ^= i;
     }
     return res;
    }
    
    
  • 相关阅读:
    R
    P
    O
    M
    二分算法的一些思考
    I
    H
    G
    5-46 新浪微博热门话题 (30分)——unfinished HASH
    BZOJ 1179: [Apio2009]Atm
  • 原文地址:https://www.cnblogs.com/xiaoxiao179/p/13622682.html
Copyright © 2011-2022 走看看