class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        vector<int> res={0, 0};
        int diff=0;
        for(int i=0; i<nums.size(); i++)
            diff=diff^nums[i];
        diff=diff&~(diff-1);    
        
        for(int i=0; i<nums.size(); i++){
            if((diff&nums[i])==0){
                res[0]=res[0]^nums[i];
            }else{
                res[1]=res[1]^nums[i];
            }
        }

        return res;
    }
};