小编tat*_*dha的帖子

计算包含另一个间隔的间隔数?

给定两个列表,每个列表包含N个间隔(数字线的子集),每个间隔具有起点和终点的形式。一个列表中的这些间隔中有多少对包含另一列表中的间隔?

例如:

如果列表A是{(1,7), (2,9)}且列表B是{(3,6), (5,8)}

那么,其中A的间隔包含B中的间隔的对的计数为3对:

(1,7),(3,6)
(2,9)(3,6)
(2,9)(5,8)
Run Code Online (Sandbox Code Playgroud)

目标是射击O(n log n)。

我目前的算法是先按x坐标排序,然后将其作为一个列表。然后按y坐标对列表进行排序,并计算两个列表之间的倒数。但是我的问题是为什么这行得通?任何见识将不胜感激。

我目前正在可视化的方式是以下几何方式(线的每个交点都是num求逆的计数):

在此处输入图片说明

注意:我不确定如何在列表列表中检查反转。只是试图找到一种可以给出O(n log n)的方法。如果有其他方法很高兴听到建议。

algorithm optimization intervals inversion divide-and-conquer

5
推荐指数
1
解决办法
1085
查看次数