首页 > 其他 > 详细

快速找出故障机器(single number)

时间:2015-04-13 14:32:49      阅读:179      评论:0      收藏:0      [点我收藏+]

简单起见,假设每个机器存储一个标号为ID的记录(ID是小于十亿的整数),假设每份数据都保存两个备份,这样就有两个机器储存了同样的数据。

1.在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找出这个表中仅出现一次的ID?

2.如果已经知道只有一台机器死机(也就是说只有一个备份丢失)呢?如果有两台机器死机呢(假设同一个数据的两个备份不会同时丢失)?

 

对应的是leetcode的Single Number,找出唯一一个出现一次的数字(其他数出现两次)

思想:异或思想,异或之后得到的结果就是单独一个的那个数字!

 

拓展:有两个数字只出现一次,其他数字出现两次,找出这两个数字?

思想:异或所有数字,得到的结果是只出现一次的那两个数异或的结果。。利用此结果分段:

a^b的结果是:可以通过第一个位是1,来进行分段(由于a,b不同,所以异或的结果,必然至少出现有一位是1)

通过此位进行分段:得到两类,然后进行异或,得到的两个数就是single number 

编程之美(p39),剑指offer(40题)

快速找出故障机器(single number)

原文:http://www.cnblogs.com/kkshaq/p/4421956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!