私はストリームを持っています(その長さはわかりませんが、理論的には無限かもしれません)。
ストリームの要素を 1 つずつ読み取ります。
ストリームから要素が読み取られるたびに、k
これまでに読み取った最大の要素を返すことができるようにしたいと考えています。
(私にとって理想的には、Python および/または Lisp/scheme のコードです)。
K は最初に読み取られ、K は NUMBER (3 番目、4 番目) または PROCENT (これまでに読み取られた要素の合計数の K %) になります。K=1/2 の場合、毎回中央値の要素を抽出することを意味します...たとえば、N 番目の要素を読み取った後、N/2 番目に大きい要素を返す必要があります
例 K=1/2:
3 -> 3
3,4 -> 3
3,4,2 -> 3
3,4,2,1 -> 2
etc.
この例は、質問を明確にするのに十分だと思います。K 番目の要素を抽出するのに最小限の時間が必要です。(これは、O(1) でストリームを読み取り、読み取った値を挿入し、K 番目の要素を抽出することを想定しています)。
O(n)よりも優れたソリューションが必要です。