范围间隔的第k个最大元素

时间:2018-10-21 20:04:19

标签: algorithm

给出整数的重叠间隔的列表。我需要找到 kth 个最大元素。

示例:

List { (3,4), (2,8), (4,8), (1,3), (7,9) }

此间隔表示数字为

[3, 4], [2, 3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8], [1, 2, 3], and [7, 8, 9].

如果我们按降序合并并对其进行排序,则会得到

9, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 1

现在列表中的第4大数字是8。

任何人都可以解释一个效率(我们不必生成列表)算法来找到仅给出内部列表的第k个元素吗?

1 个答案:

答案 0 :(得分:0)

  1. 找出最大数量。您检查一下间隔并检查间隔的结尾。您的情况是9。设置k = 1L = 9
  2. 也许还有其他9个数字。将(7,9)间隔标记为已访问,并检查是否有其他间隔包含9 a >= 9 && b <= '。在您的情况下,只有9个。
  3. 减少当前最大数字(L -= L)并清除访问间隔的历史记录。并重复检查间隔。
  4. 每次在间隔内遇到当前的最大数字时,应增加k并将间隔标记为已访问。一旦它等于kth,当前的最大数字L就是您的答案。