利用哈希:时间复杂度O(n),空间复杂度O(n)
class Solution {
public:
int singleNumber(vector<int>& nums) {
if (nums.size() == 1)
{
return nums[0];
}
unordered_map<int, int> map;
int len = nums.size();
for (int i = 0; i < len; i++)
{
if (map.find(nums[i]) == map.end())
{
map[nums[i]] = 1;
}
else {
map[nums[i]]++;
}
}
for (const auto& pair : map)
{
if (pair.second == 1)
{
return pair.first;
}
}
return 0;
}
};
利用异或:异或运算满足交换率 相同两数异或得0 0异或任何数都是0
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans=nums[0];
int len=nums.size();
if (len == 1)
return ans;
else
for(int i=1;i<len;i++)
ans^=nums[i];
return ans;
}
};