【发布时间】:2015-04-02 09:22:01
【问题描述】:
如果我有一个包含开始时间和结束时间的线程列表,如何找到具有重叠时间的线程?有这个算法吗?
我查看了this,但我不知道这是否会有所帮助,因为它找到了最大重叠数。
【问题讨论】:
标签: algorithm
如果我有一个包含开始时间和结束时间的线程列表,如何找到具有重叠时间的线程?有这个算法吗?
我查看了this,但我不知道这是否会有所帮助,因为它找到了最大重叠数。
【问题讨论】:
标签: algorithm
创建一个 Time,(Start|End),ThreadNr 个对象的数组。
按时间排序。通过更喜欢 Start 对象来计算端点重叠,或者更喜欢 End 对象来排除端点重叠来打破关系。
创建一个 ThreadNr 值的“活动”数组。
创建一组“重叠”的 ThreadNr 值对。
遍历排序后的值,并且:当遇到 Start 时,将条目添加到 ThreadNr 的“重叠”集合中,并在活动数组中与其他线程值配对,然后将 ThreadNr 添加到活动数组中。遇到 End 时,将 ThreadNr 从活动数组中移除。
【讨论】: