十二月读书笔记2

1.5 快速找出机器故障
问题描述:
有很多的ID(可能位数很大),其中只有一个ID出现的次数小于2,其他正常ID出现的次数都等于2,求这个次数为1的ID
精彩解法:
将所有的数从头到尾异或一遍,这样得出来的最终结果就是所求的答案。
拓展:
假如有两个ID出现次数为1,其他都为2,怎么求出这两个ID呢?
把那两个ID命名为A,B
这时把所有的数抑或一遍后,得到的值其实是A^B,
因为A,B是不同的,所以A^B的值的二进制中至少有一位是1。显然,A和B中有且仅有一个数的相同位上也为1
这样把所有ID分成两类,一类在这类上为1,另一类为0。然后再把这两类分别抑或即可分别得到答案


1.9 高效的安排见面会
拓展问题1:
已知n个区间,求这n个区间,在坐标轴上哪个区间上覆盖次数最多,求这个次数
书上的解法就不说了,我的解法是用线段树,区间维护sum值和max,对每个已给区间加1,然后返回整段区间的max即可
(如果区间端点不是整数,简单处理方法是把区间端点乘以10的k次方,使其成为整数)

原文地址:https://www.cnblogs.com/1329197745a/p/15651655.html