题目:
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?
思路:
直接排序或对比,时间复杂度一定在nlogn以上。利用Hash表或者Bitmap可以满足时间复杂度但是空间复杂度不能满足。O(n)时间类能采用的办法只有异或。
代码:
class Solution {
public:
int singleNumber(int A[], int n) {
while (--n!=0) A[n-1]^=A[n];
return A[0];
}
};