1 class Solution 2 { 3 public: 4 vector<int> singleNumber(vector<int>& nums) 5 { 6 int diff = 0; 7 vector<int> res(2,0); 8 for (int num : nums) diff ^= num; 9 10 diff &= -diff;//-diff先取补码,再加一,此句找出最右侧的1,根据这个1就可以进行分组 11 12 for (int num : nums) 13 { 14 if ((num & diff) == 0) res[0] ^= num; 15 else res[1] ^= num; 16 } 17 return res; 18 } 19 };
原文:https://www.cnblogs.com/yuhong1103/p/12688504.html