在一堆数字中,有两个数字出现了奇数次,其余的数字出现了偶数次,设计一种算法找出这两个数字。要求时间复杂度为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

出现了奇数次的数字的算法相关推荐

  1. C++在数字向量中找到出现奇数次的数字的算法实现(附完整源码)

    C++在数字向量中找到出现奇数次的数字的算法实现 C++在数字向量中找到出现奇数次的数字的算法实现完整源码(定义,实现,main函数测试) C++在数字向量中找到出现奇数次的数字的算法实现完整源码(定 ...

  2. 数字华容道算法生有解

    数字华容道NxN数字随机排列的阵列有解的充要条件是: N为奇数,总逆序数为偶数, N为偶数,总逆序数为奇数. --数字华容道算法2*2-10*10 --随机生成有解算法 --作者,韩永旗 --迷你号2 ...

  3. 手写识别python_Python徒手实现识别手写数字—图像识别算法(K最近邻)

    Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...

  4. C语言判断是否为happy number快乐数字的算法(附完整源码)

    C语言判断是否为happy number快乐数字的算法 C语言判断是否为happy number快乐数字的算法完整源码(定义,实现,main函数测试) C语言判断是否为happy number快乐数字 ...

  5. C语言重复加一个数的所有位数字的算法(附完整源码)

    C语言重复加一个数的所有位数字的算法 问题举例 C语言重复加一个数的所有位数字的算法完整源码(定义,实现,main函数测试) 问题举例 例如给定num = 38,过程类似于:3 + 8 = 11,1 ...

  6. C++以二进制形式生成介于1到N之间的数字的算法(附完整源码)

    C++以二进制形式生成介于1到N之间的数字的算法 C++以二进制形式生成介于1到N之间的数字的算法完整源码(定义,实现,main函数测试) C++以二进制形式生成介于1到N之间的数字的算法完整源码(定 ...

  7. C++在数字N中找到精确除以N的数字的算法(附完整源码)

    C++在数字N中找到精确除以N的数字的算法 C++在数字N中找到精确除以N的数字的算法完整源码(定义,实现,main函数测试) C++在数字N中找到精确除以N的数字的算法完整源码(定义,实现,main ...

  8. 天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享

    天池竞赛-津南数字制造算法挑战赛[赛场二]解决方案分享 一.前言 竞赛页面 团队名BugFlow,最终排名35/2157 虽然成绩一般,但是作为一支目标检测领域的新手队伍,仅仅有一块1070显卡,从零 ...

  9. 基于matlab数字识别算法系统设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目 录 内容摘要------------------------------1 关键字----- ...

最新文章

  1. 【数组方法大合集】原生js数组array常用工具方法大合集
  2. eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
  3. 为什么白帽SEO更好?
  4. 阿里云ECS——Linux连接错误[Read from socket failed: Connection reset by peer]解决方案
  5. 成都东软学院计算机科学与技术系,成都东软学院计算机科学与技术系毕业设计(论文)工作实施细则成都东软学院计算机科学与技术系毕业设计(论文)工作实施细则.doc...
  6. 《HTTP 权威指南》笔记:第十四章 安全 HTTP
  7. php+页面加载进度,基于jQuery实现模拟页面加载进度条_jquery
  8. mysql服务等待应答超时_从mysql备份报错来看net_read_timeout 和net_write_timeout参数
  9. [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败
  10. Windows 共享无线上网 无法启动ICS服务 解决方法
  11. Semantic UI 之 下拉菜单 dropdown
  12. 米思齐Mixly图形化编程---数管码时钟
  13. 脑地形图用matlab怎么画,利用MATLAB绘制GTOPO30的DEM地形图
  14. 原始Young不等式
  15. 用算法判断输入的一个数是几位数
  16. 清华校友、香港科技大学准博士ICCV顶会论文被爆公然抄袭!去年CVPR也是抄的...
  17. 葫芦书笔记----CNN和RNN
  18. svm分类器_使用放射学机器学习分类器区分胶质母细胞瘤与孤立性脑转移瘤
  19. Cadence基本操作之——SOIC封装
  20. 使用express-jwt第三方包报错TypeError: expressJWT is not a function

热门文章

  1. JDK 1.5 主要新特性
  2. java不抛出方法异常,java – 重写方法不会抛出异常
  3. .so 依赖目录 cmake_cmake浅析
  4. php 特殊字符大全,关于php 特殊字符的文章推荐
  5. 神策数据入选“2019 全球企服科技创新 Top50”
  6. JavaWeb Cookie详解
  7. 数字经济时代凸显网络安全重要性
  8. Activiti实战. 1.5Activiti架构与组件
  9. 在fedora23中安装virtualbox, 然后实现虚拟机irtualbox 或者 vmware 下的xp操作系统
  10. Redis基础知识之—— hset 和hsetnx 的区别