本文正在参加「Java主题月 – Java 刷题打卡」,详情查看 活动链接
一、题目描述
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例1
输入: [2,2,1]
输出: 1示例2
输入: [4,1,2,1,2]
输出: 4
二、思路分析
- 咋看此题很是熟悉,这个和我们之前统计重复数字的题目如出一辙啊。而且当时我可以是通过四种方式来实现的。
- hash解法、原地置换、跳位寻址等等。但是中间多多少少都引入了额外的变量
- 在当时的原地置换中我们通过位运算进行两位数据交换。哪种解法还是很抢眼的。
- 今天我们就是再次通过位运算来解决不重复的数据的。咋听起来可能有点迷茫。其实本题就是利用了位运算的原理充分解决的
异或运算
- 首先我们得了解下位运算的计算规则。我们这里用到的位运算是
异或运算
。
- 根据这个特性我们稍微整理下可以得出一个结论 : 0或者1和0进行异或得到的是其本身,进而我们能够得到任何数和0异或得到其本身
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐