#include <unordered_map>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型vector
*/
vector<int> FindNumsAppearOnce(vector<int>& nums) {
// write code here
// vector<int>res;
// res.reserve(2);
// unordered_set< int> u_set;
// for(const int & num:nums){
// if(u_set.count(num)) u_set.erase(num);
// else u_set.insert(num);
// }
// for(const int & num:u_set) res.push_back(num);
// sort(res.begin(),res.end());
// return res;
int tmp=0;
for(const int & num:nums) tmp ^=num;
int mask = 1;
while((mask & tmp) == 0) mask <<= 1;
int a=0;
int b=0;
for(const int & num:nums){
if((num & mask)!=0){
a ^= num;
}else{
b ^= num;
}
}
return a<b? vector<int>{a,b}:vector<int>{b,a};
}
};