【问题标题】:K'th Min From a set of intervalsK'th Min 来自一组区间
【发布时间】:2018-03-11 19:41:07
【问题描述】:

您已经给出了一组间隔,例如 {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。

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

【问题讨论】:

  • 所以如果k 是0,那么答案是-4?而对于 1,答案是 -1?
  • 可能k从1开始,所以k=1是-4,k=2是-1
  • 为重叠间隔添加了一些额外的东西

标签: algorithm memory data-structures time-complexity min


【解决方案1】:
  1. 使间隔变平。
  2. 对展平序列进行排序。
  3. 遍历排序后的序列,直到找到k-th 元素, 同时忽略重复值。

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

空间复杂度:

O(N)

如果你有很多重复元素,通过迭代展平序列,同时丢弃重复元素,你可以做得更好。

时间复杂度:

O(k*M + NlogN)

  • 展平需要 O(N)
  • 排序需要 O(NlogN)
  • 迭代耗时 O(k*M)

【讨论】:

    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 2014-11-21
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多