[剑指offer][面试题40]数组中只出现一次的数字
2013-10-21 22:52
661 查看
一个整型数组中除了两个数字之外,其他的数字都出现了两次,写出程序找出这两个只出现了一次的数字,时间复杂度要求O(n),空间复杂度要求O(1).
#include <iostream> using namespace std; bool findNumsAppearOnce(int *piData, int iLen, int & iNum0, int & iNum1) { if (iLen<2){ return false; } int iXOR = 0; for (int i=0; i<iLen; i++){ iXOR ^= piData[i]; } int iFlag = 1; while ( !(iXOR & iFlag) && (iFlag<0x8FFFFFFF) ){ iFlag <<= 1; } iNum0 = 0; iNum1 = 0; for (int i=0; i<iLen; i++){ if (piData[i] & iFlag){ iNum0 ^= piData[i]; } else{ iNum1 ^= piData[i]; } } return true; } int main() { int data[8] = {2,4,3,6,3,2,5,5}; int a, b; bool bFound = findNumsAppearOnce(data, 8, a, b); if (bFound){ cout<<a<<" "<<b<<endl; } }
相关文章推荐
- 剑指offer——面试题40:数组中只出现一次的数字
- 【剑指offer】面试题40-数组中只出现一次的数字
- 剑指Offer面试题39二叉树的深度(以及判断平衡二叉树),面试题40数组中只出现一次的数字
- 【剑指Offer】面试题40:数组中只出现一次的数字
- 剑指offer--面试题40:数组中只出现一次的数字
- 剑指offer 面试题40 数组中只出现一次的数字
- 【面试题】剑指Offer-40-数组中只出现一次的数字
- 剑指offer——面试题40:数组中只出现一次的数字
- 剑指offer-面试题40-数组中只出现一次的数字
- 剑指Offer面试题40:数组中只出现一次的数字 Java实现
- 剑指Offer面试题40(Java版):数组出现一次的数字
- 剑指offer之面试题40数组中只出现一次的数字
- 剑指offer 面试题40—数组中两个只出现一次的数字
- 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】
- 剑指Offer_面试题40_数组中只出现一次的数字
- 剑指Offer----面试题40:数组中出现一次的数字
- 剑指offer——面试题40:数组中只出现一次的数字
- 【剑指Offer学习】【面试题40:数组中只出现一次的数字】
- [剑指offer]面试题40:数组中只出现一次的数字
- 剑指Offer:面试题40 数组中只出现一次的数字