0

我有一个排序间隔列表和另一个列表,它描述了每个间隔的索引。这是一个例子:

间隔 = [(0, 2), (2, 3), (4, 6)] // (0, 2) 包含 0,但不包含 2

值 = [2, 3, 7]

现在,我想知道,“提及”每个间隔的频率。当它的值在另一个区间时,提到了一个区间。问题是,当一个区间被提及 n 次时,它所提及的所有区间也被提及 n 次。默认情况下,所有间隔都被提及一次。所以,(4, 6) 被提到了一次,(2, 3) 也被提到了一次,但是 (0, 2) 被提到了两次,因为它的索引 2 在区间 (2, 3) 中。我想在此示例中将列表 [2, 1, 1] 作为输出。请注意,列表中的值始终在增加,并且间隔只能在其上方提及间隔。

我已经有了一个解决方案,但它的时间复杂度是 O(n**2),这对我来说太慢了。现在有没有人是线性或 O(n*log n) 解决方案?

4

0 回答 0