异或运算有以下三个性质:
1. 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a;
2. 任何数和其自身做异或运算,结果是 0,即 a⊕a=0;
3. 异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b;
class Solution { public: int singleNumber(vector<int>& nums) { // write code here int n; for(int i:nums){ n^=i;//利用性质1和2; } return n; } };