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?
a^a = 0;
0^a = a;
a^b^a = a^a^b = 0^b = 0;
class Solution {
public:
int singleNumber(int A[], int n) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int s = 0;
for(int i = 0; i < n; i++) {
s ^= A[i];
}
return s;
}
};