問題タブ [interval-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 間隔の 2 つの並べ替えられたリストが与えられた場合、2 つのリスト間で重複する間隔を返します
間隔の 2 つのリストと が与えられA
ますB
。
ではA
、区間は開始点でソートされています。A
重複する区間はありません。
同様に、B
では、区間は開始点でソートされています。B
重複する区間はありません。
2 つのリスト間で重複する区間を返します。
例:
戻る:
私はインタビューでこれを得て、困惑しました。
2 つのリストの間隔を比較することを考えました。2 つの間に重複がある場合は、重複を結果リストに追加します。次に、開始間隔が短いリストのポインターを進めましたが、インタビューの終わりまでに有効なソリューションに到達できませんでした。
この問題を解決する最善の方法は何ですか?
time-complexity - インターバル ツリーの時間計算量分析
私が現在学習しているインターバル ツリーには、ノードごとに次のデータ構造があります。
key
: すべての間隔の終点の中央値left
,right
: 左右のサブツリーを指すintervals
: を含む間隔を含む間隔のリストkey
。
より正確な情報は、このリンクにあります。
インターバル ツリーを使用したクエリの時間計算量は O(logn + k) であることがわかりました。ここで、n はインターバルの数、k は報告された結果の数です。
の部分がよくわかりませんlogn
。がインターバルv
ツリーの現在のノードで、Q
がクエリ間隔であるとします。アルゴリズムは次のようになります。
最初は、if
2 つのサブツリーに入る必要があるようです。最悪の場合、すべてのツリー ノードをトラバースしなければならず、時間計算量が O(n + k) になるのではないでしょうか?