出现了奇数次的数字的算法
在一堆数字中,有两个数字出现了奇数次,其余的数字出现了偶数次,设计一种算法找出这两个数字。要求时间复杂度为O(n),空间复杂度为O(1)
假设这两个数为a,b,将数组中所有元素异或结果x=a^b,判断x中位为1的位数(注:因为a!=b,所以x!=0,我们只需知道某一个位为1的位数k,例如0010 1100,我们可取k=2或者3,或者5),然后将x与数组中第k位为1的数进行异或,异或结果就是a,b中一个,然后用x异或,就可以求出另外一个。
php代码实现如下:
<?php
class xor_odd
{public function __construct($arr, &$one, &$two){if(!is_array($arr)){return FALSE; }$res = 0;$len = count($arr);for($i=0; $i<$len; $i++){ $res = $res^$arr[$i]; } $temp = $res; $k = 0; while(!($temp&1)){ $temp = $temp>>1; $k++; } $temp = 0; for($i=0; $i<$len; $i++){ if(($arr[$i]>>$k)&1){ $temp = $temp^$arr[$i]; } } $one = $temp; $two = $temp^$res; }
} function main()
{ $arr = array(2,3,4,4,5,6,6,5); new xor_odd($arr, $one, $two); echo iconv('utf-8', 'gbk', '出现了奇数次的两个数字为:'.$one.' 和 '.$two); return 0;
}main();
算法的扫描过程如下图所示:
转载于:https://blog.51cto.com/hehe1987/1650971
出现了奇数次的数字的算法相关推荐
- C++在数字向量中找到出现奇数次的数字的算法实现(附完整源码)
C++在数字向量中找到出现奇数次的数字的算法实现 C++在数字向量中找到出现奇数次的数字的算法实现完整源码(定义,实现,main函数测试) C++在数字向量中找到出现奇数次的数字的算法实现完整源码(定 ...
- 数字华容道算法生有解
数字华容道NxN数字随机排列的阵列有解的充要条件是: N为奇数,总逆序数为偶数, N为偶数,总逆序数为奇数. --数字华容道算法2*2-10*10 --随机生成有解算法 --作者,韩永旗 --迷你号2 ...
- 手写识别python_Python徒手实现识别手写数字—图像识别算法(K最近邻)
Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...
- C语言判断是否为happy number快乐数字的算法(附完整源码)
C语言判断是否为happy number快乐数字的算法 C语言判断是否为happy number快乐数字的算法完整源码(定义,实现,main函数测试) C语言判断是否为happy number快乐数字 ...
- C语言重复加一个数的所有位数字的算法(附完整源码)
C语言重复加一个数的所有位数字的算法 问题举例 C语言重复加一个数的所有位数字的算法完整源码(定义,实现,main函数测试) 问题举例 例如给定num = 38,过程类似于:3 + 8 = 11,1 ...
- C++以二进制形式生成介于1到N之间的数字的算法(附完整源码)
C++以二进制形式生成介于1到N之间的数字的算法 C++以二进制形式生成介于1到N之间的数字的算法完整源码(定义,实现,main函数测试) C++以二进制形式生成介于1到N之间的数字的算法完整源码(定 ...
- C++在数字N中找到精确除以N的数字的算法(附完整源码)
C++在数字N中找到精确除以N的数字的算法 C++在数字N中找到精确除以N的数字的算法完整源码(定义,实现,main函数测试) C++在数字N中找到精确除以N的数字的算法完整源码(定义,实现,main ...
- 天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享
天池竞赛-津南数字制造算法挑战赛[赛场二]解决方案分享 一.前言 竞赛页面 团队名BugFlow,最终排名35/2157 虽然成绩一般,但是作为一支目标检测领域的新手队伍,仅仅有一块1070显卡,从零 ...
- 基于matlab数字识别算法系统设计与实现(含源文件)
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目 录 内容摘要------------------------------1 关键字----- ...
最新文章
- 【数组方法大合集】原生js数组array常用工具方法大合集
- eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
- 为什么白帽SEO更好?
- 阿里云ECS——Linux连接错误[Read from socket failed: Connection reset by peer]解决方案
- 成都东软学院计算机科学与技术系,成都东软学院计算机科学与技术系毕业设计(论文)工作实施细则成都东软学院计算机科学与技术系毕业设计(论文)工作实施细则.doc...
- 《HTTP 权威指南》笔记:第十四章 安全 HTTP
- php+页面加载进度,基于jQuery实现模拟页面加载进度条_jquery
- mysql服务等待应答超时_从mysql备份报错来看net_read_timeout 和net_write_timeout参数
- [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败
- Windows 共享无线上网 无法启动ICS服务 解决方法
- Semantic UI 之 下拉菜单 dropdown
- 米思齐Mixly图形化编程---数管码时钟
- 脑地形图用matlab怎么画,利用MATLAB绘制GTOPO30的DEM地形图
- 原始Young不等式
- 用算法判断输入的一个数是几位数
- 清华校友、香港科技大学准博士ICCV顶会论文被爆公然抄袭!去年CVPR也是抄的...
- 葫芦书笔记----CNN和RNN
- svm分类器_使用放射学机器学习分类器区分胶质母细胞瘤与孤立性脑转移瘤
- Cadence基本操作之——SOIC封装
- 使用express-jwt第三方包报错TypeError: expressJWT is not a function
热门文章
- JDK 1.5 主要新特性
- java不抛出方法异常,java – 重写方法不会抛出异常
- .so 依赖目录 cmake_cmake浅析
- php 特殊字符大全,关于php 特殊字符的文章推荐
- 神策数据入选“2019 全球企服科技创新 Top50”
- JavaWeb Cookie详解
- 数字经济时代凸显网络安全重要性
- Activiti实战. 1.5Activiti架构与组件
- 在fedora23中安装virtualbox, 然后实现虚拟机irtualbox 或者 vmware 下的xp操作系统
- Redis基础知识之—— hset 和hsetnx 的区别