私は、サイズ0の配列Aを持っているとします。ここで、0 < = A [i] < = nです。一定の時間で最小要素を取得する
私は2つのフォワード配列や後方、サイズn、考えてみましょう:私の質問がある
Forward[i] = index j where
A[j] = min(A[i], A[i+1], ..., A[n-1])
と
Backward[i] = index j where
A[j] = min(A[i], A[i-1], ..., A[0])
:A、前方および後方与え
- を
- 与えられた2つのインデックスlとR
Iは、一定の時間でインデックスkは、[K] =分([L]、A [L + 1]、...、A [R])ことを発見することができ?
'Forward'と' Backward'配列を持つ点は何ですか? 'A [0]'と 'A [n-1] 'の両方が最小値(例えば' 0')であれば、それらの配列は無用ですか? – user463035818
Aはソートされておらず、値は0からn-1である必要はありません。たとえば、すべて1にすることができます。 、 – Daniel
はSTD 'が悪いのかと思っ:: min' ..もちろん、あなたのタイプは、まともな比較演算子を持っている必要がありますが、彼らはありません、その後の配列をソートされていない場合は、「最小値を求める」ビットが.. –