码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-13 14:35:49      阅读:86      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!