1

(xi,f(xi)) のマップがあり、f(xi) も厳密に増加しています。この方法でキーと値を交換する必要があります

私の関数の入力:

との地図

//keys :  x0,       x1,     x2,     ...,        xn
// vals :  f(x_0)   f(x1),  f(x2),  ...,        f(xn)

私の関数の出力:マップ

// key : left_val f(x_0)    f(x1),  ...,        f(xn-1)
// vals : x0,       x1,     x2,     ...,        xn

(ここで left_val は入力パラメーターです。f(x0) よりも低いことがわかっています)。正しい構造を使用していない可能性があることはわかっていますが、log(n) 挿入と順序付けられたキーの一意性が本当に必要です...

それをどのように効率的に実装しますか(つまり、マップを複製しないでください)?

前もって感謝します。

4

2 に答える 2

1

新しいマップに新しいエントリを挿入するときは、二分探索アルゴリズムを使用して挿入を行います。各挿入は O(log n) になり、マップを再作成する合計時間は O(n log n) になります。

于 2013-05-07T06:48:44.817 に答える