n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法和数据结构?
人生最曼妙的风景,竟是内心的淡定与从容!
上記の 2 つの回答の出発点は異なります。
バランスのとれた二分木も実行できますが、元のシーケンスはソートされます。 C++ では、set と map の両方が要件を満たすことができます。
線分ツリーは、並べ替えることなく間隔の最大値または最小値を見つけることができます。 利用可能な既製のデータ構造はありません。テンプレートを自分で作成できます。
バランスの取れたバイナリ ツリーを使用する
バランスの取れたバイナリ ツリーを使用するにはどうすればよいでしょうか。これは可能ですが、最大値と最小値のみの場合は、既成の heap を使用するだけで済みます。 C++ のデータ構造。STL の priority_queue です。
heap
priority_queue
線分ツリーは解決できます...
C++ STL で set を使用する
set
上記の 2 つの回答の出発点は異なります。
バランスのとれた二分木も実行できますが、元のシーケンスはソートされます。
C++ では、set と map の両方が要件を満たすことができます。
線分ツリーは、並べ替えることなく間隔の最大値または最小値を見つけることができます。
利用可能な既製のデータ構造はありません。テンプレートを自分で作成できます。
バランスの取れたバイナリ ツリーを使用する
バランスの取れたバイナリ ツリーを使用するにはどうすればよいでしょうか。これは可能ですが、最大値と最小値のみの場合は、既成の
heap
を使用するだけで済みます。 C++ のデータ構造。STL のpriority_queue
です。線分ツリーは解決できます...
C++ STL で
set
を使用する