您拥有一台可以同时执行多个作业的机器。当机器根本不处理任何作业时,它处于空闲状态。您将获得所有作业的开始和停止时间的列表,并询问机器何时空闲以及何时没有作业运行。
因此给出这个时间表:
10:00至11:00之间机器处于空闲状态,这是唯一且最大的间隔。
如果作业每天重复,则从 12:00 到 00:00 会有另一个时间间隔,但为了使示例简单,您可以假设这些作业仅运行一次。
伪代码:
busy = []
for each Job
find intervals in busy that overlap with job
if no overlapping intervals are found
add job interval to busy
else
remove overlapping intervals from busy
merge overlapping intervals with job interval
add new interval to busy
find longest busy interval
create non-busy intervals from busy intervals
find longest non-busy interval
Run Code Online (Sandbox Code Playgroud)