dph5199278

关于区间重叠的算法

需求:

由于公司的项目中可以做多种服务,每种服务都可以自定义服务时间,但是每种服务的时间区间是不能重复的

前提:

区间A[A1, A2], 区间B[B1, B2]...

算法:

stary = max(A1, B1);

end = min(A2, B2);

len = end - start;

当0 <= len 时,说明区间重叠,重叠的区间为len

公司需求的特殊性:

1. 8:00-9:00与9:00-10:00的2个服务是不算重叠的,所以当 0 < len时,区间重叠

2. 只要求判断是否重叠,而无需考虑重叠部分

 

需求:

由于公司项目规定,每个客户可以做什么服务,都有一个有效区间。在有效期间内才能做服务,并且服务本身也有有效期间

前提:

A客户可以做B种类的服务,有效期是2016年4月10日-2018年4月1日;B种类服务,B1有效期为2010年4月1日-2016年11月30日,B2有效期为2016年11月1日-2020年12月31日,当客户A在某月进行添加服务时

算法:

将这个月转为long[]数组,数组下标初始值都为0。A占用下标值0X1,B1占用下标值0X10,B2占用下标值0X100,用for循环将数组值填满,这个数组的下标即可表示A客户能不能做什么服务。

公司需求的特殊性:

1. 可一次性取出某个月某天可以做的所有服务

2. 不用每次都取数据库重新计算,缓存下即可

评论