什么是异或

什么是异或

对于异或之前在学习的时候有学过,但后来很少用到,恰巧今天在做题的时候发现用异或会变的很简单,同时复杂度会降得特别低,这激起了我对异或的兴趣。

异或运算其实就是两个相同的数异或就是0,然后0和任何数异或得到的结果就是这个数,1和任何数异或得到的都是这个数取反。

1.  0 ^ 1 = 1

2.  1 ^ 0 = 1

3.  1 ^ 1 = 0

        System.out.println(1^0);
        System.out.println(0^1);
        System.out.println(1^1);

执行结果如下:

这就很方便我们在很多有相同数的运算中来操作了。

例如本题:

一个数组中除了某个特定元素只出现一次,其他元素都出现两次。找出该特定元素。

当时我的写法是同HashMap去存储然后去找只出现一次的元素,这样得到结果的复杂度要远大于使用异或。

使用异或的时候只需要一次把所有元素异或,然后得到的结果就是该元素。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值