我试图找到两个与任何其他任务不重叠的任务之间的最大差距。给定n
个任务及其开始和结束时间。我们还给出了该过程的开始时间和结束时间。最大差距应该在开始和结束之间。
我想出了一个算法,我根据结束时间按升序对任务进行排序,然后使用扫描线方法检查上一个兼容作业的作业i(如果有的话)并计算差距来自那里。但是,我的算法在很多情况下失败了。有什么帮助吗?
Python代码:
largestgap = timedelta(0)
for i in range(len(tasks)):
s1 = tasks[i].start
e1 = tasks[i].end
if s1 > start and s1 < end:
s2 = tasks[i-1].start
e2 = tasks[i-1].end
if s1 > e2:
if e2 < start:
largestgap = max(largestgap, s1 - start)
else:
largestgap = max(largestgap, s1 - e2)
return str(largestgap.seconds)