Solution:
思路:排序后进行左右比对
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(vector<int>::iterator iter = nums.begin();iter!=nums.end();iter++){
if(iter==nums.begin() && (*iter != *(iter + 1))){
return *iter;
}
else if(iter==(nums.end()-1) && (*iter != *(iter - 1))){
return *iter;
}
else if((*iter != *(iter - 1)) && (*iter != *(iter + 1))){
return *iter;
}
}
}
讨论区看到的答案:附在这里
int singleNumber(int a[], int n) {
//xor all numbers, the left over number would be the non repeated one
// since the equl numbers cancel out each others bits
int num = 0;
for (int i = 0; i < n; ++i) {
num ^= a[i];
}
return num;
}