一开始我想的是先排序然后再去做,这样也可以通过,但是后来我看到了异或的评论这才想起来。
异或就是相同的为0,不同的为1,当你异或同一个数两次的时候,原数不变。所以只出现一次的那个数字,最后就是你的异或全部数字得出的结果。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for( int i = 0 ; i < nums.size() ; i++ ){
ans ^= nums[i];
}
return ans;
}
};