それぞれが N 区間 (数直線のサブセット) を含む 2 つのリストが与えられ、各区間は始点と終点の形式を持ちます。あるリストからのこれらの間隔の何組が、別のリストからの間隔を含んでいますか?
例えば:
リスト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 座標で並べ替え、それを 1 つのリストとして取得することです。次に、リストを y 座標で並べ替え、2 つのリスト間の反転を数えます。しかし、私の質問は、なぜこれが機能するのですか? 任意の洞察をいただければ幸いです。
私が現在視覚化している方法は、次の幾何学的な方法です(線の各交点は数値反転のカウントです):
注:リストのリストで反転をチェックする方法がわかりません。O(n log n)を与えるアプローチを取得しようとしています。提案を聞いて喜んで他のアプローチがある場合。