利用异或的性质:相同的数的异或为0。
class Solution {
public:
vector<int> singleNumbers(vector<int>& nums) {
int total=0;
for(int num:nums)
{
total^=num;
}
int div=1;
while((div&total)==0)
{
div<<=1;
}
int a=0,b=0;
for(int num:nums)
{
if(div&num)//不要写==1!
a^=num;
else
b^=num;
}
return vector<int>{a,b};
}
};
这个return的方式很不错,记住!vector<int>{a,b},这样就不用之前push_back了。