Given an array of integers, every element appears twice except for one. Find that single one.
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
struct OP {
int operator() (int x, int y)
{
i*=-1;
return x+i*y;
}
OP():i(-1){};
int i;
};
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(), nums.end());
return accumulate(nums.begin(), nums.end(), 0, OP());
}
};原文:http://blog.csdn.net/guodongxiaren/article/details/50615067