博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Single Number 异或的妙用
阅读量:6007 次
发布时间:2019-06-20

本文共 612 字,大约阅读时间需要 2 分钟。

1、数组中仅仅有一个元素仅仅出现一次,其余出现偶数次。

利用异或中同样元素相互抵消的方式求解。

2、数组中仅仅有2个元素仅仅出现一次。其余出现偶数次。

class Solution {public:	int singleNumber(int A[], int n) {//返回仅仅出现一次的元素		if(n==1)return A[0];        int i,sum=A[0];		for(i=1;i
twoSingleNumber(int A[], int n) { int res=singleNumber(A,n);//找出全部元素异或的结果,即两个目标元素异或的结果 int pos=0,i; while(res){//找出res为1的一位(这是两个目标元素位数不同的一位),从而可将A划分为两部分,这两部分中,同样的数字为在同一部分,由于他们每位都同样 if(res&1)break; res>>=1; pos++; } vector
ans(2,0); for(i=0;i
>pos)&1)ans[0]^=A[i];//假设是pos位为1。即为第一部分,对这部分进行异或,终于同样的数字消除掉,得到的就是第一个元素 else ans[1]^=A[i]; } cout<
<<" "<
<

转载于:https://www.cnblogs.com/yutingliuyl/p/6939618.html

你可能感兴趣的文章
String、StringBuffer和StringBuilder的区别
查看>>
【原创】ObjectARX中的代理对象
查看>>
.net中验证码的几种常用方法
查看>>
解决OracleDBConsoleorcl不能启动
查看>>
.net DLL程序集中打包另一个DLL
查看>>
我的友情链接
查看>>
Drupal第三方模块汇集(一)
查看>>
我的友情链接
查看>>
使用spring的自身的listener进行web的配置
查看>>
linux学习之“VI”与“VIM”
查看>>
linux下无线网卡驱动安装
查看>>
oracle recyclebin与flashback drop
查看>>
我的友情链接
查看>>
svmlight使用说明
查看>>
LVM
查看>>
学习之shell脚本
查看>>
Andorid Launcher程序代码分析
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>