博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用异或求(整数数组中,有2K+1个数,其中有2k个相同,找出不相同的那个数)...
阅读量:5846 次
发布时间:2019-06-18

本文共 687 字,大约阅读时间需要 2 分钟。

转自

java的位运算符中有一个叫异或的运算符,用符号(^)表示,其运算规则是:两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个例子:

public class TestXOR{public static void main(String[] args) {int i = 15, j = 2;System.out.println("i ^ j = " + (i ^ j));}}

运行结果是:i ^ j = 13.

分析上面程序,i=15转成二进制是1111,j=2转成二进制是0010,根据异或的运算规则得到的是1101,转成十进制就是13.

利用这个规则我们可以灵活运用到某些算法。比如,假定有2K+1个数,其中有2k个相同,需要找出不相同的那个数

比如:2、3、4、4、3、5、6、6、5。我们利用异或运算符

就可以这样写:

public class TestXOR{public static void main(String[] args) {int[] array = {
2,3,4,4,3,5,6,6,5};int v = 0;for (int i = 0;i < array.length;i++) {v ^= array[i];}System.out.println("只出现一次的数是:" + v);}}

结果是:只出现一次的数是2.

我们就是巧用异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。

转载于:https://www.cnblogs.com/lijingran/p/8854915.html

你可能感兴趣的文章
使用GHOST对Windows操作系统进行备份和还原
查看>>
KMeans (K均值)算法讲解及实现
查看>>
为什么不应该使用Zookeeper做服务发现?(转载)
查看>>
京东购物在微信等场景下的算法应用实践
查看>>
Chef宣布100%开源,要走红帽模式?\n
查看>>
“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
查看>>
利用人工智能提升团队包容性
查看>>
Oracle发布多语种虚拟机平台GraalVM 1.0
查看>>
Gil Zilberfeld问答:敏捷产品的规划与管理
查看>>
Qt 工程管理
查看>>
Azul Systems推出Falcon,一个基于LLVM的新的Java即时编译器
查看>>
某些编程语言更容易出错?研究人员提出质疑
查看>>
90 后 CTO 创业 6 年,做了一件改变互联网的“小事”
查看>>
首份《敏捷回顾年度报告》发布
查看>>
Slack桌面3.0迁移到BrowserView
查看>>
Node和JS基金会宣布合并为 OpenJS 基金会
查看>>
我们常常意识不到问题的存在,直到有人解决了这些问题
查看>>
Oracle 裁员史:技术人死于重组,卒于云计算
查看>>
都去炒AI和大数据了,落地的事儿谁来做?
查看>>
Angular2管理外部类型定义和处理“Duplicate identifier” TypeScript错误
查看>>