如何基于起始集将一组时间间隔转换为另一组时间间隔

时间:2012-08-08 19:18:38

标签: c# .net algorithm time intervals

我有一组称为setTimes的时间间隔,如下所示:

[a,d] [h,j] [k,l]

另一组时间rawTimes如此:

[a,c] [b,e] [e,g] [f,i] [k,l] [i,m]
需要将

rawTimes转换为setTimes指定的区间内的新区间。所以结果集是:

[a,c] [b,d] [h,i] [k,l] [i,j] [k,l]

(其中a< b< c ...< m)

基本上,结果集应全部包含在setTimes集合的区间内。 rawTimes中的间隔可能会被分成多个部分,或者它甚至永远不会进入最终集合。

目前,我所做的是将setTimes间隔中的每个开始时间添加到名为startTimes的列表中,将结束时间添加到endTimes。所以:

startTimes = a , h , k
endTimes = d , j , l

但我被困在那里。我不知道从哪里去。

1 个答案:

答案 0 :(得分:1)

您可以使用Allen's interval algebra

优雅地完成此任务