【发布时间】:2021-06-15 04:02:31
【问题描述】:
给定一组区间 S,从集合 S 中找到分配给每个区间的子集数的有效方法是什么。
举个例子
S = (11,75), (14,62), (17,32), (24,48), (31,71), (34,74), (40,97), (41,58)
至于输出
(11, 75) => 6 -> (14,62), (17,32), (24,48), (31,71), (34,74), (41,58)
(14, 62) => 3 -> (17,32), (24,48), (41,58)
(17, 32) => 0
(24, 48) => 0
(31, 71) => 1 -> (41,58)
(34, 74) => 1 -> (41,58)
(40, 97) => 1 -> (41,58)
(41, 58) => 0
是否有可能在 o(nlogn) 或远小于 o(n2 )?
【问题讨论】:
-
我猜这仍然是 o(n^2)。如果我错了,请纠正我。
-
是否保证输入按间隔开始排序?
-
我们知道与区间数相比值范围的大小吗? IE。 max_val - min_val vs num_ranges?
-
@Dave 不能保证输入已排序。我在玩箱子,所以用这个作为例子。此外,对于间隔数的值范围,我们一无所知。
标签: algorithm data-structures divide-and-conquer