小编Бор*_*иев的帖子

在 O(1) 空间中从流中选择随机项

使用恒定空间以均匀概率从流中随机选择一个项目

该流提供以下操作:

class Stream:

  def __init__(self, data):
    self.data = list(data)

  def read(self):
    if not self.data:
      return None

    head, *self.data = self.data
    return head

  def peek(self):
    return self.data[0] if self.data else None
Run Code Online (Sandbox Code Playgroud)

流中的元素(因此 的元素data)具有恒定大小,并且它们都不是None,因此None表示流结束。流的长度只能通过消耗整个流来了解。请注意,计算元素数量会消耗O(log n)空间。

我相信没有办法使用O(1)空间从流中随机选择一个项目

任何人都可以证明这一点吗?

random algorithm optimization probability

6
推荐指数
2
解决办法
1310
查看次数

标签 统计

algorithm ×1

optimization ×1

probability ×1

random ×1