所以我正在阅读我的笔记,但我并没有真正理解这部分:
定义 f, s 为一个区间的开始和结束时间。按完成时间对所有间隔进行排序。所以假设我们有一组区间 I_1, ..., I_n 并定义 pred[i] = 最大索引 j 使得 f_j <= s_i。(所以基本上在 i 之前的下一个最接近的间隔不与 i 重叠)。
现在我们要为 n 中的所有 I_i 求解所有 pred[i]。为什么这个 theta(n log n) 的运行时间是?我认为,在最坏的情况下,所有 I_1,...,I_(i-1) 都与 I_i 重叠;因此将进行 n - 1 次比较,然后进行 n - 2 次比较,依此类推。最好的情况是没有一个区间重叠,并且 pred(i) 对每个区间进行 1 次比较。我不确定为什么“排序和计算 pred[i] 值”的运行时是 theta(n logn)。