K'th Min从一组间隔

时间:2017-09-29 20:41:40

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

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

可以有很多方法来解决这个问题。但是我很难找到时间/空间复杂度最小的那个。

1 个答案:

答案 0 :(得分:3)

  1. 平整间隔。
  2. 对展平序列进行排序。
  3. 迭代排序的序列,直到找到k个元素, 而忽略了重复的值。
  4. 现在让我们进行一些分析,我们设置N您的时间间隔中存在的总数的数量,M数字将包含的重复值的平均数量(将为1)对于一个独特的扁平序列)。

    空间复杂性

      

    O(N)

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

    时间复杂度

      

    O(k * M + NlogN)

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