给定两个包含N个区间(数轴的子集)的列表,每个区间都有起始点和终止点。这些列表中有多少对区间来自于一个列表且包含另一个列表中的区间?
例如:
如果列表A是{(1,7), (2,9)},列表B是{(3,6), (5,8)}
那么A中包含B中一个区间的区间的数量将会是3个:
目标是追求O(n log n)的时间复杂度。我的算法目前是首先按x坐标进行排序并将其作为一个列表。然后按y坐标对列表进行排序并计算两个列表之间的逆序对数。但我的问题是为什么这样做可以实现呢?希望能得到任何见解。我当前的可视化方式如下图所示(其中每条线的交点表示逆序对数): 注意:我不确定如何检查列表中嵌套的列表的反转。只是试图找到一种可以在O(n log 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)
目标是追求O(n log n)的时间复杂度。我的算法目前是首先按x坐标进行排序并将其作为一个列表。然后按y坐标对列表进行排序并计算两个列表之间的逆序对数。但我的问题是为什么这样做可以实现呢?希望能得到任何见解。我当前的可视化方式如下图所示(其中每条线的交点表示逆序对数): 注意:我不确定如何检查列表中嵌套的列表的反转。只是试图找到一种可以在O(n log n)时间内完成的方法。如果有其他方法,欢迎提出建议。