最近インタビューでこんな質問をされました。私はO ( n ² ) の解を思いつくことができましたが、インタビュアーはO ( n ) の解に夢中でした。私が理解したO ( n log n )の他のいくつかのソリューションもチェックしましたが、 O ( n ) ソリューションは、開始時間でソートされた予定を想定した私のお茶ではありません。
誰でもこれを説明できますか?
問題文: n件の予定が与えられています。各予定には、開始時刻と終了時刻が含まれています。競合するすべての予定を効率的に返す必要があります。
人物: 1,2, 3, 4, 5
アプリ開始: 2, 4, 29, 10, 22
アプリ終了: 5, 7, 34, 11, 36答え: 2x1 5x3
O ( n log n ) アルゴリズム: 次のように開始点と終了点を分離します。
2s、4s、29s、10s、22s、5e、7e、34e、11e、36e
次に、このすべてのポイントを並べ替えます (簡単にするために、各ポイントが一意であると仮定します)。
2s、4s、5e、7e、10s、11e、22s、29s、34e、36e
終わりのない連続した開始がある場合、それは重複しています: 2 と 4 は隣接しているため、重複があります。
「s」のカウントを保持し、遭遇するたびに +1 し、e に遭遇するとカウントを 1 減らします。