class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int sum=0;
for(int i=0;i<nums.size();++i) sum^=nums[i];
int dif=sum&(-sum),x=0,y=0;
for(int i=0;i<nums.size();++i) if(nums[i]&dif) x^=nums[i];
//即使nums[i]&dif!=0的话 x^=nums[i],由于他们成对出现,所以相当于没有异或上他们
vector<int>ans;
ans.push_back(x),ans.push_back(sum^x);
return ans;
}
};
leetcode 260. 只出现一次的数字 III(只有两个元素出现一次,别的都出现两次 求这两个元素 异或)
最新推荐文章于 2021-06-24 23:26:55 发布