20170515_使用异或运算求出孤独数

来源:互联网 发布:js dialog 关闭事件 编辑:程序博客网 时间:2024/06/06 15:19

20170515_使用异或运算求出孤独数


  思想:
两个相同的数异或结果为0,不同为1 ,根据该规则下列过程如下
假设 数组为 2,3,2,3,4,1,4
那么结果应该为1
2^3=0000 0010 ^ 0000 0011 = 0000 0001   1
1^2=0000 0001 ^ 0000 0010 = 0000 0011    3
3^3=0000 0011 ^ 0000 0011 =  0000 0000    0
0^4=0000 0000 ^ 0000 0100 = 0000 0100  4
4 ^ 1 =0000 0100 ^ 0000 0001 = 0000 0101 5
5 ^ 4= 0000 0101 ^ 0000 0100 =0000 0001  1
整个过程如上,最后结果为1。

代码:

//136. Single Number //Given an array of integers, every element appears twice except for one. //Find that single one.//Note://Your algorithm should have a linear runtime complexity.//Could you implement it without using extra memory? #include<iostream>#include<vector>using namespace std;void Outdata(vector<int> &a){auto beg=a.begin();for(; beg!=--a.end(); ++beg)cout<<*beg<<",";cout<<*beg<<endl;}class Solution{public:    int singleNumber(vector<int> &nums){int result=0;        for(auto n:nums)result=result^n;return result;    }};int main(){vector<int> a;int ch;cout<<"依次输入数据:"<<endl;while(cin>>ch)a.push_back(ch);cout<<"输入的数据是:"<<endl;Outdata(a);Solution example;int result;result=example.singleNumber(a);cout<<"查找到的那个孤单数:"<<result<<endl<<endl;system("pause");return 0;}






原创粉丝点击