你有N個人。每個人都有一段空閒時間段。這個調度算法的更好的解決方案?
例如,Person 1的空閒時間段可能是[(9,9.5); (11,12.5)],這意味着他在9點到9點半和11點到12點半之間是免費的。
您想找到一個時間段,以便您可以將所有N人聚集在一起並召開2小時的會議。
寫一個方法:
輸入:
列表的列表,每個列表內是 人的空閒時間週期列表
輸出:
一個或多個時間段,您可以使用N個人會議 2小時;或者你不能找到這樣一個時間段
什麼,我想是這樣的:
合併兩個人的時間段列出了以下方法:如果兩個時間段沒有按」 t重疊,然後刪除具有較早開始時間的那個;否則,將重疊部分(新時間段)放到新列表中,並刪除具有較早開始時間的部分。繼續合併。
合併完成後,我們會得到一個新的列表,其中包含兩個人的時間重疊,然後將其與第三個人合併,直到所有列表合併爲止。
掃描最終的合併列表並找出2小時的時隙。
該算法** O(N * M),如果假定每個人都有M
免費時間段。
有沒有更好的解決方案?
什麼是時間複雜度? –
[編輯答案] –