有多个循环时间间隔,从startTime到endTime开始。每个间隔由重复的开始时间、结束时间(重复将继续进行的时间点)、onDuration(活跃时可以重叠)和offDuration定义。
示例间隔:
startTime: 3 secs
endTime: 30 secs
onDuration: 3 secs (represented by x)
offDuration: 5 secs (represented by -)
|--[xxx]-----[xxx]-----[xxx]-----[xxx]-|
重叠区间:如果两个循环系列在它们的开始和结束时间范围内具有重叠的开启时间(x),则它们被认为是重叠的。
问题:有数十个这样的时间段。提供了一个由相同参数(startTime、endTime、onDuration、offDuration)定义的新循环间隔。这个新的循环间隔是否与任何现有的间隔在startTime和endTime的时间范围内重叠?
PotentialInterval:
startTime: 6 secs
endTime: 15 secs
onDuration: 3 secs
offDuration: 6 secs
潜在间隔与样本间隔不冲突,因为它在可能重叠之前就结束了。
备注:
这与此问题非常相似,但我无法完全理解解决方案的正确性。而且,我只对确定它们是否冲突(布尔值true或false),而不是实际的冲突间隔感兴趣。
每个间隔的结束时间和开始时间都形成等差数列。startTimen = startTime + (n-1) (onDuration + offDuration),其中 startTimen < endTime。因此,也许此问题可能指出正确的方向,尽管我找不到如何将持续时间纳入其中的方法。
样本要小得多。实际上,每个重复中的单个间隔数量可能会有几千个(例如,从现在到未来10年每天下午3点到4点)。此外,重复次数可能会达到数百次。因此,去规范化数据(制作每个发生的列表)可能不太实用。
此数据存储在NoSQL数据库中,因此无法在数据库内进行日期时间操作。这需要在内存中完成,并且最好在约500毫秒的顺序中完成。