如果我有一个包含开始时间和结束时间的线程列表,如何找到重叠时间的线程?有算法吗?
我查看了this,我不知道这是否会有所帮助,因为它找到了最大重叠次数。
答案 0 :(得分:2)
创建一个Time,(Start | End),ThreadNr对象的数组。
按时间排序。通过优先选择Start对象来计算端点重叠,或者更喜欢End对象来排除端点重叠,从而打破联系。
创建一个ThreadNr值的“活动”数组。
制作一组“重叠”的ThreadNr值对。
遍历排序值,并且:遇到Start时,向ThreadNr的“重叠”集添加一个条目,与活动数组中的每个其他线程值配对,然后将ThreadNr添加到活动数组。遇到End时,从活动数组中删除ThreadNr。