正の整数のシーケンスと整数 M を指定すると、シーケンス内で M (存在しない場合は -1) より大きい最初の数値を返します。
例: シーケンス = [2, 50, 8, 9, 1]、M = 3 -> リターン = 50
必要なクエリごとに O(log n) (前処理後)。
私はBSTについて考えましたが、昇順のシーケンスを考えると、長いパスしか得られず、O(logn)時間は得られません...
編集: 使用される構造も変更が容易である必要があります。つまり、見つかった要素をその特定の要素に置き換えて、別の M (前処理を除くすべて - O(logn)) の検索を繰り返すことができる必要があります。そしてもちろん、「最初に大きい」を「最初に小さい」に変更でき、アルゴリズムをあまり変更する必要がなかったとしたら、それは素晴らしいことです。それが役に立てば、すべての数は正であり、繰り返しはないと仮定できます。