260. 只出现一次的数字 III

 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 };

 

posted @ 2020-04-12 23:10  Jinxiaobo0509  阅读(104)  评论(0)    收藏  举报