您的位置:首页 > 其它

leetcode 136. Single Number

2017-03-15 15:05 344 查看
题目:Given an array of integers, every element appears twice except
for one. Find that single one.

找到在数组中只出现过一次的数,要求线性时间,同时空间复杂度为O(1)。

思路:将数组中的元素从小到大进行排列,然后比较相邻的元素,判断相邻的元素是否相等。

实现代码



另一种高效地实现方法:采用XOR异或运算符。

异或运算符的特点:

1. 可交换,即 a ^ b = b ^ a

2. 0 ^ a = a

因而,对于实例{2,1,4,5,2,4,1}就会有这样的结果:

(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5

实现代码如下:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: