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