数组中数字出现的次数 发表于 2019-09-27 | 浏览 次 数组中只出现一次的数一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题目来源:剑指offer 56 123456789101112131415161718192021222324252627282930313233unsigned int findFirstBitIs1(int num) { int indexBit = 0; while (((num & 1) == 0) && (indexBit < 8 * sizeof(int))) { num = num >> 1; ++indexBit; } return indexBit;}bool IsBit1(int num, unsigned int indexBit) { num = num >> indexBit; return (num & 1);}void findNumsAppearOnce(vector<int> data, int *num1, int *num2) { if (data.size() < 2) { return; } int resultExclusiveOR = 0; for (int i = 0; i < data.size(); i++) { resultExclusiveOR ^= data[i]; } unsigned int indexOf1 = findFirstBitIs1(resultExclusiveOR); *num1 = *num2 = 0; for (int i = 0; i < data.size(); i++) { if (IsBit1(data[i], indexOf1)) { *num1 ^= data[i]; } else { *num2 ^= data[i]; } }}