我有一个时间戳和持续时间数组以及占用的时间戳数组。 我现在需要检查这些时间戳是否发生碰撞。如果时间戳范围在时间戳范围内
基本上$启动[]不能内任何$占用[]时间戳
$start[0] = 1486987200; // 12:00
$duration[0] = 3600;
$start[1] = 1487008800; // 18:00
$duration[1] = 7200;
$occupied[0] = 1486989000; // 12:30
$ocDuration[0] = 3600;
$occupied[1] = 1487019600; // 21:00
$ocDuration[1] = 7200;
从上述$start[0]
是不可能的,因为$occupied[0]
是它的取值范围为1小时(3600秒)的范围内,但$start[1]
是可能的,因为它从18:00开始,并在2小时后结束。
另一种情况可能是,当$occupied[0]
二者重叠$start[]
:
所以现在的问题是,我该怎么办这样的检查?
喜爱的描述和示范 – Ima
对于这种事情的[间隔树](https://en.wikipedia.org/wiki/Interval_tree)是一种优良的数据结构。我不知道是否有一个PHP的实现;但是我已经在Python库上成功构建了类似的东西,比如[this](https://pypi.python.org/pypi/intervaltree)。 – deceze
感谢您的回复。我会研究间隔树。似乎这可能是未来的好事 – JPJens