我有一個時間戳和持續時間數組以及佔用的時間戳數組。 我現在需要檢查這些時間戳是否發生碰撞。如果時間戳範圍在時間戳範圍內
基本上$啓動[]不能內任何$佔用[]時間戳
$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