class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int AB = 0;
int N = nums.size();
for(int i=0;i<N;i++) AB ^= nums[i];
int leftone = ((AB^(AB-1))+1)>>1;
int A = 0;
for(int i=0;i<N;i++){
if(nums[i]&leftone) A^=nums[i];
}
int B = AB^A;
vector<int> ans = {A,B};
return ans;
}
};
No.115 - LeetCode260
最新推荐文章于 2021-09-16 15:18:24 发布
本文介绍了一种使用C++中的位操作解决单例数问题的方法。通过异或运算和位屏蔽技巧,算法能在O(N)时间内找出数组中出现一次的两个数。此方法不使用额外空间,展示了位操作的高效性和灵活性。
193

被折叠的 条评论
为什么被折叠?



