找出只出现一次的数---异或性质

2022-05-13 09:18:00 浏览数 (1)

参照LintCode的道题目,内容如下所示:

给出2*n 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。   样例   给出 [1,2,2,1,3,4,3],返回 4

利用异或性质

此题考察的是异或运算的特点: 即两个相同的数异或结果为0。 0异或任何数,结果是这个数0^X=X

代码:

代码语言:javascript复制
public static int find1From2(int[] a){
        int len = a.length, res = 0;
        for(int i = 0; i < len; i  ){
            res = res ^ a[i];
        }
        return res;
    }
举个栗子 分析遍历结果

int[] arr=new int[]{2 ,1 ,3 ,2 ,1}; 其^下来为 res=0^2^1^3^2^1; res=0^2^2^1^1^3 res=0^3; res=3;

0 人点赞