`​nums​`​, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.

For example:

`​nums = [1, 2, 1, 3, 2, 5]​`​, return ​`​[3, 5]​`​.

Note:

1. The order of the result is not important. So in the above example,

`​[5, 3]​`

1. Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?

1.先异或，得到的值是两个只出现一次的整数的异或值。

2.找出该异或值中第一个不为0的位置，即两个整数不相等的位。

3.根据该位将整数划分为两部分，两个整数分别位于两个部分。异或即可分别得到两个整数。

`class Solution {public:  vector<int> singleNumber(vector<int>& nums) {    int xres = nums[0];    for (int i = 1; i < nums.size(); i++){      xres ^= nums[i];    }    int iOne = 0;    for (int i = 0; i < 32; i++){      if ((xres >> i) & 1){        iOne = i;        break;      }    }    int res1 = 0, res2 = 0;    for (int i = 0; i < nums.size(); i++){      if ((nums[i] >> iOne) & 1){        res1 ^= nums[i];      }      else{        res2 ^= nums[i];      }    }    vector<int> res;    res.push_back(res1);    res.push_back(res2);    return res;  }};`