个人主页:Lei宝啊
愿所有美好如期而遇
本题我们仍然使用异或解决,但是这一次我们发现如果用0直接去异或整个数组,我们什么也得不到,所以我们可以排序,然后只异或相邻数据,然后下标一次向后加三,如果说相邻的不相等,那么本次下标的数据就是单个数字。
class Solution
{
public:
int singleNumber(vector<int>& nums)
{
sort(nums.begin(),nums.end());
for(int i=0; i+1<nums.size();)
{
if(nums[i] == nums[i+1])
{
i += 3;
}
else
{
return nums[i];
}
}
return nums[nums.size()-1];
}
};