识别无序流中的新数字
Identify new number in unordered stream
我收到了一个无序的数字流。有没有我可以持有的数据结构,以便知道流中是否已经存在一个数字,而无需持有我从流中获得的数字集合(它是无限流)?
不,不可能避免持有所有以前看到的数字。
为此,散列 table 可能是最合适的。
可能通过压缩或利用一些 属性 数据可以实现(边际)节省,但您没有告诉我们太多相关信息。
创建一个位流,当你看到一个数字时转到那个位并翻转它。通过这种方式,您可以使用 less space.
来记住数字
所以如果要记住的数字是 32 位长。存储位流所需的总 space 为 2^32 位或 536.870912 兆字节和访问位流的恒定时间。
如果数字很大,您可以将它们再次散列为 32 位。
我收到了一个无序的数字流。有没有我可以持有的数据结构,以便知道流中是否已经存在一个数字,而无需持有我从流中获得的数字集合(它是无限流)?
不,不可能避免持有所有以前看到的数字。
为此,散列 table 可能是最合适的。
可能通过压缩或利用一些 属性 数据可以实现(边际)节省,但您没有告诉我们太多相关信息。
创建一个位流,当你看到一个数字时转到那个位并翻转它。通过这种方式,您可以使用 less space.
来记住数字所以如果要记住的数字是 32 位长。存储位流所需的总 space 为 2^32 位或 536.870912 兆字节和访问位流的恒定时间。
如果数字很大,您可以将它们再次散列为 32 位。