乍一看好像是一道哈希,但是卡了常数空间,和线性时间复杂度,hash会到nlogn所以不符合要求,那么这道题为什么可以不用哈希就能做。注意道题目条件除了一个数只出现一次,其他数都会出现两次。这时候可以联想到位运算,一个数字连续两次异或得到0,那么整个nums数组进行异或最后就能得到只出现一次的值。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans=0;
for(int i=0;i<nums.size();i++){
ans^=nums[i];
}
return ans;
}
};