找出出现奇数次的数
来源:互联网 发布:神话 知乎 编辑:程序博客网 时间:2024/05/16 18:43
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601611.html
题目:
- 给你n个数,其中有且仅有一个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那一个数。
- 给你n个数,其中有且仅有两个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那两个数。
答案:
从头到尾异或一遍,最后得到的那个数就是出现了奇数次的数。这是因为异或有一个神奇的性质:两次异或同一个数,结果不变。再考虑到异或运算满足交换律,先异或和后异或都是一样的,因此这个算法显然正确。
从头到尾异或一遍,你就得到了需要求的两个数异或后的值。这两个数显然不相等,异或出来的结果不为0。我们可以据此找出两个数的二进制表达中不同的一位(即找出所有结果的二进制形式中的为1的位),然后把所有这n个数分成两类,在那一位上是0的分成一类,在那一位上是1的分到另一类。对每一类分别使用前一个问题的算法。
0 0
- 找出出现奇数次的数
- 在N个数中找出出现奇数次的数
- 某数组中两个数出现奇数次,剩余的出现偶数次,找出这两个数
- 【算法题】找出且仅有的出现了奇数次的一个数
- 从数组中找出出现奇数次的那个数 Python版
- 寻找唯一出现奇数次的数
- 找出现奇数次的两个数
- 找出数组中出现奇数次的元素
- 找出数组中出现奇数次的元素
- 找出数组中出现奇数次的元素
- 【算法题】找出两个只出现奇数次的数字
- 一组数中,只有两个数只出现了奇数次,其他所有数都是成对出现的,请找出那两个数
- 找出奇数个数中唯一出现一次的数
- 218 N个数出现了偶数次,2个数出现了奇数次,找出这两个数
- 在其它数都出现偶数次的数组中寻找出现奇数次的数
- 在其他数都出现偶数次的数组中找到出现奇数次的数
- 趣题:寻找出现了奇数次的数
- 寻找出现了奇数次的数 ---线性时间常数空间
- 解密谷歌的大数据技术
- 015.8.2 第七堂 delegate和block实现下载功能
- day21
- HDU1811-Rank of Tetris
- 事物
- 找出出现奇数次的数
- HDU - 5392 Infoplane in Tina Town
- uva 10335 - Ray Inside a Polygon(几何)
- Python中lambda匿名函数的使用
- 多线程(一) 基本概念,pthread,NSThread
- 解析数论引论 第1章 算术基本定理
- POJ 2187 Beauty Contest(凸包求最远点距离)
- 华为OJ(寻找最长等差数列)
- grep 命令突然输出太多垃圾信息的解决办法