来自一组区间的第 K 个最小值

K'th Min From a set of intervals

您已经给出了一组间隔,例如 {2,7} 、 {3,8} 、 {9,11} 、 {-4,-1} 等等。问题是从这些间隔集中找到第 k 个分钟。

重复项也被计算两次。例如,如果间隔是 {1,4} 和 {2,6} 并且 k = 3 那么答案是 2 因为如果我们展平间隔并排序合并它们然后我们得到序列

 1,2,2,3,3,4,4,5,6

第 3 分钟为 3。

有很多方法可以解决这个问题。但是我正在努力寻找时间最短/ space 复杂度的那个。

  1. 拉平间隔。
  2. 对展平序列进行排序。
  3. 迭代排序序列,直到找到第 k 个元素, 同时忽略重复值。

现在让我们做一些分析,我们设置 N 间隔中出现的总数和 M 一个数字将具有的重复值的平均数量(对于一个数字将是 1独特的展平序列)。

Space 复杂度:

O(N)

如果您有很多重复元素,您可以在哪些方面做得更好,方法是遍历展平序列,同时丢弃重复元素。

时间复杂度:

O(k*M + NlogN)

  • 展平需要 O(N)
  • 排序时间复杂度为 O(NlogN)
  • 迭代时间为 O(k*M)