给定一组区间 I,每个元素的形式为 [a_i, b_i],在 O(n*logn) 时间内找到最大深度的终点 b_i。将 x 的深度定义为点“刺穿”(或相交)的间隔数。如果两个端点深度相同,则返回较小的一个。
尝试:
我不知道如何在 O(n * logn) 时间内找到它。我理解用于查找一组间隔的刺伤集的贪心算法,但是以严格的 O(n * log n) 时间查找终点似乎非常不同。
我可以尝试首先对间隔进行排序,然后强力得出最大深度终点,但这并不能保证 O(n * log n) 时间。
您可以尝试以下方法:
在 C++ 中,您可以维护向量数据,同时将间隔作为输入。只需将起点推入 make_pair(start_point,0),0 表示起点,同样,1 表示间隔结束。
现在执行以下操作:-