给定N个间隔,包括起点和终点。存在多少对这些间隔,使得一个间隔包含另一个间隔?
例如,如果给定的间隔是:
{2,3},{1,5},{0,10},{2,4}
然后我们有5对:
{0,10}
包含{2,3}
{0,10}
包含{2,4}
{0,10}
包含{1,5}
{1,5}
包含{2,4}
{1,5}
包含{2,3}
我们只对这些对的数量感兴趣。你能帮我找到至少一个O(N log N)
解决方案(O(N^2)
是微不足道的吗?)
注意:时间间隔以{startpoint,endpoint}
的形式给出,其中起点和终点最多可达10 ^ 18。
提前谢谢!
答案 0 :(得分:1)
按startpoint
排序,使用mergesort派生的O(n log n)-time算法计算endpoint
列表中的反转次数。