找出数组中两个只出现一次的数字
2014-03-26 18:35
323 查看
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。
请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
分析:这是一道很新颖的关于位运算的面试题。
先求异或得出一个结果是这两个数字的异或,必不为0。其二进制至少有一位为1,以这位为准把原数组分为两部分,一部分该位为1数,一部分该位为0数。这两个数必分别在这两个小数组里,且每个小数组除此数之外其他数出现两次,再用异或就可以分别求得。
请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
分析:这是一道很新颖的关于位运算的面试题。
先求异或得出一个结果是这两个数字的异或,必不为0。其二进制至少有一位为1,以这位为准把原数组分为两部分,一部分该位为1数,一部分该位为0数。这两个数必分别在这两个小数组里,且每个小数组除此数之外其他数出现两次,再用异或就可以分别求得。
相关文章推荐
- zoj 3626 Treasure Hunt I(树背包)
- 活用UML-软件设计高手(深圳 2014年4月26-27日)
- poj 3228 Gold Transportation
- Leetcode--Search in Rotated Sorted Array(旋转数组的查找)
- Tomcat 6.x 生成CSR
- 第三周作业——顺序查找和二分查找
- 对android的一些感想——2014-03-26
- 阶层之和
- 【每周荐书05】《新亚遗铎》(钱穆 著)
- Struts的execute方法
- word如何在图片中插入文字
- ubuntu安装curlftpfs挂载ftp目录到本地
- 去博物馆玩玩
- Android Binder简介
- Qt Creator定制
- linux下查看静态库和动态库是32位还是64位
- 高性能的数据压缩库libzling-20140324
- CKEditor插件开发
- oracle数据迁移
- 对象数组操作长方柱类