您的位置:首页 > 其它

Single Number

2015-07-19 18:35 330 查看
题目描述

链接地址

解法

算法解释

题目描述

Given 2*n + 1 numbers, every numbers occurs twice except one, find it.

Example

Given [1,2,2,1,3,4,3], return 4

链接地址

http://www.lintcode.com/en/problem/single-number/

解法

int singleNumber(vector<int> &A) {
// write your code here
if (A.size() == 0) {
return 0;
}
int ret = A[0];
for (int i = 1; i < A.size(); i++) {
ret = ret ^ A[i];
}
return ret;
}


算法解释

异或运算具有如下性质:

1、性质

0 ^ 1 = 1

0 ^ 0 = 0

1 ^ 1 = 0

2、满足结合律:

a ^ b = b ^ a;

3、满足交互律:

a ^ ( b ^ c) = (a ^ b) ^ c;

因为异或运算满足结合律和交换律,并且相同元素的异或运算结果为0,所以当把所有元素抑或后,最后的结果就是那个不同元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode