一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 无 class Solution {public: void FindNumsAppearOnce(vectorint data,int* num1,int *num2) {int length = data.size(); if(length 2) { *num1 = 0; *num2 =
class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int length = data.size(); if(length < 2) { *num1 = 0; *num2 = 0; return; } int temp = 0; for(int i = 0;i < length;++i) { temp ^= data[i]; } int index = FindFirstBit1(temp); *num1 = *num2 = 0; for(int i = 0; i < length; ++i) { if(IsBit1(data[i],index)) *num1 ^= data[i]; else *num2 ^= data[i]; } } private: int FindFirstBit1(int num) { int index = 0; while((num&1)==0&&index < 32) { index++; num = num >> 1; } return index; } bool IsBit1(int num, int index) { if((num >> index) & 1) return true; return false; } };