我有一个流(我不知道它的长度,理论上可能是无穷大)。
我一一阅读流的元素。
每次从流中读取一个元素时,我都希望能够返回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) 更好的解决方案。