栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 异或代码编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 异或代码编程

什么是异或
异或的运算方法是一个二进制运算:

1^1=0

0^0=0

1^0=1

0^1=1

两者相等为0,不等为1.

由此得出
0^N=N
N^N=0
2)异或运算满足交换律和结合率
a^b=b ^a
(a^b) ^c= a ^( b ^ c)

int a=甲;
int  b=乙;
a=a ^b;    a=甲 ^ 乙;  b=乙;
b=a ^b;    a=甲 ^ 乙;  b=甲 ^ 乙 ^ 乙=甲 ;
a=a ^b;    b=甲        a=甲 ^ 乙 ^ 甲=乙;

必须满足内存区域不能相等才能用异或运算

异或的题型
在一个数组中,整型数组,已知只有一种数出现了奇数次,其他数出现了偶数次
满足 时间复杂度o(N),空间复杂度未o(1)
找出奇数次的数
    public static void printoddTimesNum1(int[]arr){
        int eor =0;
        for (int cur :arr){
            eor ^=cur;
        }
        System.out.println(eor);
}

为什么这么写嗯

例如一个数组:
四个1 ;四个2 三个3
[1,3,2,1,2,3,1,2,3,1,2]
1^1 ^1 ^1 ^ 2 ^2 ^2 ^2 ^3 ^ 3 ^3=3;
因为
1^1 ^1 ^1=0;
2^2 ^2 ^2=0;
3^ 3 ^3=3;

在一个数组中,整型数组,已知只有俩种数出现了奇数次,其他数出现了偶数次
满足 时间复杂度o(N),空间复杂度未o(1)
找出奇数次的数
    public static void printoddTimesNum1(int[]arr){
        int eor =0;
        for (int cur :arr){
            eor ^=cur;
        }
        System.out.println(eor);
}

全部异或之后就剩俩个奇数的异或了,
也就是 a^b

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号