剑指offer 面试题40—数组中两个只出现一次的数字

来源:互联网 发布:电脑制图软件有哪些 编辑:程序博客网 时间:2024/05/16 13:47

题目:

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度O(n),空间复杂度O(1)。


基本思想:

http://blog.csdn.net/wtyvhreal/article/details/44260321

#include <iostream>using namespace std;int Find1(int n)//从低位开始找第一个1的位置{int index=0;while((n&1)==0 && (index<8*sizeof(int))){n=n>>1;++index;}return index;}bool isbit1(int n,int index){n=n>>index;return (n&1);}void foo(int data[],int len){if(len<2)return;int result=0;for(int i=0;i<len;i++)result^=data[i];int index = Find1(result);int x=0;int y=0;for(int j=0;j<len;j++){if(isbit1(data[j],index))x^=data[j];elsey^=data[j];}cout<<x<<" "<<y<<endl;}void main(){int a[8]={2,4,3,6,3,2,5,5};foo(a,8);}


0 0
原创粉丝点击