追跡する(キー、値)オブジェクトがたくさんあり、多くの挿入と削除があるとします。
次の3つの要件を満たす必要があります。
- 任意の時点で一定時間内に最大キーを取得します
- 対数時間で任意のキーの値を検索します。
- 挿入と削除には対数時間がかかります。
これを行うことができるデータ構造はありますか?
私の考え:
優先キューは一定時間で最大値を取得できますが、値を検索できません。二分探索木(2〜3木)は対数時間で検索できますが、maxもO(lgN)を取ります。BSTで最大値を追跡しようとすると、最大値を削除して2番目に大きいものを見つける必要があるときにO(lgN)がかかります。