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

本文共 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

你可能感兴趣的文章
WCF实例上下文以及会话学习
查看>>
Android系统中的广播(Broadcast)机制简要介绍和学习计划
查看>>
Properties 配置文件的读取
查看>>
[后缀数组、不重复子串]SPOJ694、spoj705--Distinct Substrings
查看>>
Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)...
查看>>
ruby/python/java全覆盖的Selenium-Webdriver系列教程(2)————浏览器的简单操作
查看>>
logcat
查看>>
实验五 含有控制信号的计数器VHDL设计
查看>>
ExtJs 通过分析源代码解决动态加载Controller的问题
查看>>
字符串相似度算法 递归与动态规划求解分析
查看>>
同步博客到CSDN
查看>>
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
查看>>
用友CDM系统,将货位间商品移库单(一步)修改为内调出入库单(一步)方法使用...
查看>>
(Problem 14)Longest Collatz sequence
查看>>
Oracle中 Package与Package body的介绍
查看>>
解决设置redmineblacklog的按钮无效问题
查看>>
为阿里云存储开发的PHP PEAR 包:Services_Aliyun_OSS
查看>>
2013人人网校园招聘笔试题
查看>>
SqlServer基础:Bit类型
查看>>
挖财_百度百科
查看>>