来自一组区间的第 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 复杂度的那个。
- 拉平间隔。
- 对展平序列进行排序。
- 迭代排序序列,直到找到第
k
个元素,
同时忽略重复值。
现在让我们做一些分析,我们设置 N
间隔中出现的总数和 M
一个数字将具有的重复值的平均数量(对于一个数字将是 1独特的展平序列)。
Space 复杂度:
O(N)
如果您有很多重复元素,您可以在哪些方面做得更好,方法是遍历展平序列,同时丢弃重复元素。
时间复杂度:
O(k*M + NlogN)
- 展平需要 O(N)
- 排序时间复杂度为 O(NlogN)
- 迭代时间为 O(k*M)
您已经给出了一组间隔,例如 {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 复杂度的那个。
- 拉平间隔。
- 对展平序列进行排序。
- 迭代排序序列,直到找到第
k
个元素, 同时忽略重复值。
现在让我们做一些分析,我们设置 N
间隔中出现的总数和 M
一个数字将具有的重复值的平均数量(对于一个数字将是 1独特的展平序列)。
Space 复杂度:
O(N)
如果您有很多重复元素,您可以在哪些方面做得更好,方法是遍历展平序列,同时丢弃重复元素。
时间复杂度:
O(k*M + NlogN)
- 展平需要 O(N)
- 排序时间复杂度为 O(NlogN)
- 迭代时间为 O(k*M)