leetcode 260

这个是曾经一家公司的面试题,主要是利用这两个数的二进制中肯定有一位不同,利用这一位异或的到两组数据,再分别对着两组数据进行异或即可得到最终答案

 1 class Solution {
 2 public:
 3     vector<int> singleNumber(vector<int>& nums) {
 4         int intersect=0;
 5         for(int i=0;i<nums.size();i++)
 6            intersect^=nums[i];
 7        int bindif=0,num=1;
 8        while(intersect) {
 9            if(intersect%2==1)
10               break;
11               intersect/=2;
12               num*=2;
13        }
14        vector<int>result(2,0);
15        for(int i=0;i<nums.size();i++) {
16        if((num&nums[i])==0)
17        result[0]^=nums[i];
18        else
19            result[1]^=nums[i];
20        }
21        return result;
22     }
23 };
原文地址:https://www.cnblogs.com/thefirstfeeling/p/5691844.html