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