2015-04-02 101 views
0

如果我有一個包含開始時間和結束時間的線程列表,如何找到重疊時間的線程?有沒有這樣的算法?查找重疊時間的線程

我看着this,我不知道這是否有幫助,因爲它找到了最大重疊數。

回答

2

創建一個Time,(Start | End),ThreadNr對象的數組。

按時間排序。通過選擇開始對象來計算端點重疊來斷開連接,或者優先選擇結束對象以排除端點重疊。

創建一個「活動的」ThreadNr值數組。

製作一組「重疊」的ThreadNr值對。

瀏覽已排序的值,並且:遇到Start時,爲與活動數組中的每個其他線程值配對的ThreadNr添加一個條目,然後將ThreadNr添加到活動數組中。遇到End時,從活動數組中移除ThreadNr。