classSolution{
public:
vector<int>singleNumbers(vector<int>& nums){
int ret =0;for(auto n : nums){
ret ^= n;}int dev =1;while((dev & ret)==0){
dev <<=1;}int a =0,b =0;for(auto n : nums){
if(n & dev)
a ^= n;else
b ^= n;}return vector<int>{
a,b};}};
classSolution{
public:intsingleNumber(vector<int>& nums){
//时间复杂度是O(n),辅助数组长度固定是32,空间复杂度是O(1)if(nums.size()==0){
return-1;}int bitSum[32]={
0};for(int n : nums){
//要把bitMask设置成unsigned,或者在下面判断是否溢出,否则会出现负数左移报错//int:[-2^31,2^31-1];unsigned int[0,2^32-1]//unsigned int bitMask=1;int bitMask =1;for(int j =31; j >=0; j --){
int bit = bitMask & n;if(bit !=0){
bitSum[j]++;}if(bitMask<=INT_MIN||bitMask>=INT_MAX){
break;}
bitMask = bitMask <<1;}}int result=0;for(int i =0; i <32; i ++){
result = result <<1;
result += bitSum[i]%3;}return result;}};