个人主页: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]; } };