20170515_使用异或运算求出孤独数
来源:互联网 发布:js dialog 关闭事件 编辑:程序博客网 时间:2024/06/06 15:19
20170515_使用异或运算求出孤独数
思想:
两个相同的数异或结果为0,不同为1 ,根据该规则下列过程如下
两个相同的数异或结果为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;}
阅读全文
0 0
- 20170515_使用异或运算求出孤独数
- 使用异或运算实现两数交换
- 使用异或运算实现两数交换
- 不使用比较运算就可以求出两个数的最大值与最小值
- 不使用比较运算求出两个数的最大值与最小值
- 用异或运算交换两个数
- 异或运算交换两个数
- 用三目运算符求出三个数中最大数
- 使用异或运算 不借助临时变量交换两个数
- 使用按位异或运算符进行两数交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 落单的数算法(巧妙的异或运算)
- java异或运算交换两个数的陷阱
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- BM系列之 架构
- java web学习推荐博客
- PHP获取汉字首字母
- servlet生命周期
- springMvc注解@RequestParam用法解析
- 20170515_使用异或运算求出孤独数
- loadrunner性能测试_第二步 运行负载测试
- IOS远程消息推送
- java有参构造方法和无参构造方法
- How to let electric meters go slow
- 简要介绍一下asynctask和handler的优缺点
- android 登陆、提交数据或加载数据时提示页面
- 关于虚拟币的投资
- mybatis的简单基本实现