博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
想不到的异或操作。。
阅读量:7177 次
发布时间:2019-06-29

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

hot3.png

假设一数组:数组中有两个元素只出现一次,其它数据均出现两次,怎么在o(n)时间复杂内 找出那两个数 开始想用Hash,不过异或一次后就是那两个只出现一次的数据的异或结果,,然后取出异或结果中二进制出现1的一位, 从而把数据分成两半。分别异或然后得出结果。 测试程序: int main(int argc, char* argv[]) { int a[]={1,2,3,1,3,4,5,5};//测试数据 int temp=0; int len=sizeof(a)/sizeof(a[0]); for(int i=0;i<len;i++) { temp^=a[i]; } int flag=1; while(1){ if((temp&1)!=0) break; else {flag<<=1;temp>>=1;} } int result1=0;//两个结果 int result2=0;

for(i=0;i

} 最终输出结果:4 2

转载于:https://my.oschina.net/yang1992/blog/214201

你可能感兴趣的文章
【普及】中小企业项目上线的一般流程
查看>>
mvn常用命令
查看>>
C语言之程序中内存的来源:栈 堆 数据段
查看>>
2012R2 VM on Hyper-v 2008 R2错误解决
查看>>
BIOS锁定纯UEFI启动的解锁办法
查看>>
php打包备份好的数据库文件(也可打包别的文件)
查看>>
JVM原理及调优
查看>>
读书笔记--101个shell脚本 之#12--函数
查看>>
TCP/IP之(四)Delay ack 和 Nagle算法
查看>>
linux学习:selinux 禁用后(disabled)Linux系统无法正常启动解决
查看>>
ldd ldconfig LD_LIBRARY_PATH的关系
查看>>
关于tomcat和jetty对比(不喜欢jetty的勿看)
查看>>
grafana使用详解
查看>>
linux 文件同步 rsync+crontab
查看>>
git如何删除远程仓库的某次错误提交
查看>>
LAMP架构讲解(续一)
查看>>
51la图片做网店流量统计
查看>>
压力测试工具JMeter入门教程
查看>>
linux下查看文件编码及修改编码
查看>>
VC中的延时
查看>>