快速找出故障机器
来源:互联网 发布:广数英制螺纹怎么编程 编辑:程序博客网 时间:2024/05/22 07:56
问题出自编程之美,简化问题描述
问题1:有n数a1,a2,,,,,an,其中只有一个数只出现了一次,其余数均出现了两次,求出这个数,比如7 7 6 6 3,答案是3
利用异或运算,举上例说明
7,7,6,6,3在位运算时的表示为
111,111,110,110,011
将各位异或,
第一位1^1^1^1^0=0
第二位1^1^1^1^1=1
第三位1^1^0^0^1=1
011=3,正好是答案
将所有数异或,对于只出现了一次的数,
二进制为1对应的位上的1的个数一定是奇数,异或后是1
二进制为0对应的位上的0的个数一定时偶数,异或后是0
由上两条知,异或的结果一定是答案
问题2:有n数a1,a2,,,,,an,其中只有两个不相同的数分别只出现了一次,其余数均出现了两次,求出这个数,比如7 7 6 6 3 5,答案是3 5
仍然将所有数异或
设两数是A,B
所有数异或的结果C=A^B
如例子所有数异或后的结果为110
对于110这个二进制数来说,其中的1代表A和B有且仅有一个数在该位上为1
比如我取左起第一个二进制位,该位为1
对于所有数
111
111
110
110
011
101
按照第一位是否为1分成两组,A和B必定被分到两个不同的组里
111
111
110
110
101
和
011
第一组所有数异或后的结果为101,第二组为011,答案求出
- 快速找出故障机器
- 快速找出故障机器
- 快速找出故障机器
- 快速找出故障机器
- 快速找出故障机器
- 快速找出机器故障
- 1.5 快速找出机器故障
- 1.5 快速找出故障的机器
- 《编程之美》-- 快速找出故障机器
- 读书笔记之编程之美 - 1.5 快速找出故障机器
- 《编程之美》阅读心得之快速找出机器故障
- 编程之美_1.5_快速找出机器故障
- 读书笔记-编程之美-1.5快速找出故障机器
- 编程之美——快速找出故障机器
- 每日一题(19) - 快速找出机器故障
- 编程之美1:快速找出故障机器
- 【编程之美】1.5 快速找出故障机器
- 编程之美(5) 快速找出故障机器
- 商圣是怎么炼成的?
- 改进版“杨辉三角”
- C++堆排序
- SGU 172(判定二分图)
- Eclipse快捷键大全(转载)
- 快速找出故障机器
- iOS小技巧:禁止全屏点击事件
- UBOOT 6410分析篇
- windows UAC功能(用户帐号控制功能)设置
- github使用
- python发送邮件方法
- MCU上使用系统的理解
- 第十四周 函数版 冒泡排序
- C语言中char变量详解