class Solution {
public:
int findFirstBitIs1(int num){
int index=0;
while((num&1)==0 && index<8*sizeof(int)){
num=num>>1;
index++;
}
return index;
}
bool isBit1(int num,int index){
num=num>>index;
return (num&1);
}
vector<int> singleNumbers(vector<int>& nums) {
vector<int> res;
int resultIndex=0;
for(int i=0;i<nums.size();i++){
resultIndex^=nums[i];
}
int indexOf1=findFirstBitIs1(resultIndex);
int num1=0,num2=0;
for(int i=0;i<nums.size();i++){
if(isBit1(nums[i],indexOf1))
num1^=nums[i];
else
num2^=nums[i];
}
res.push_back(num1);
res.push_back(num2);
return res;
}
};