题目:
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
我的解法:
(1)算法思想:
对一个数做两次异或运算(^),得到原来的数本身。即,(a^b)^b=a。本题将数组中的所有数一起做一次异或运算,就可以得到那个孤立的数。只需遍历一次即可,算法时间复杂度为o(n)。
(2)代码如下:
class Solution {
public:
int singleNumber(int A[], int n) {
while(n>=2)
{
A[n-2]^=A[n-1];
n--;
}
return A[0];
}
};