剑指offer-数组中数字出现的次数
问题一:数组中只出现一次的两个数字 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 源码: (num&1)记得打括号,记得打括号,记得打括号。重要的事情说三遍。 class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int nlength = data.size(); if(nlength<2) return; int sum = 0; for(int i=0; i<nlength; i++){ sum ^= data[i]; } int index = findfirst(sum); // num1=num2=0; for(int i=0; i<nlength; i++){ if(isbit(data[i], index)) *num1 ^= data[i]; else *num2 ^= data[i]; } } int findfirst(int num){ int index=0; while((num&1)==0){ num = num>>1; index++; } return index; } bool isbit(int num, int index){ num = num>>index;