给出 2 * n + 1个数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例 1:
输入:[1,1,2,2,3,4,4]
输出:3
解释:
仅3出现一次
/**
* @param A: An integer array
* @return: An integer
*/
const singleNumber = function (A) {
var a = 0
for(let i = 0; i < A.length; i++) {
a ^= A[i]
}
return a
}
解析:^(异或的用法)
0与任何数异或的结果是这个数本身。
一个数和本身异或的结果是0。
所以遍历下来,0与其他数异或得到数本身,数与数异或,如果相同得0,不同则是数本身。
网友评论