我得到一个无序的数字流。是否有一个数据结构,我可以保存,以便知道流中是否已存在一个数字而不保存我从流中获得的数字集合(它是无限流)?
答案 0 :(得分:1)
创建一个比特流,当你看到一个数字转到那个位并翻转它。通过这种方式,您可以使用更少的空间记住数字。
因此,如果要记住的数字是32位长。存储比特流所需的总空间为2 ^ 32位或536.870912兆字节,并且是访问比特流的恒定时间。
如果数字很大,你可以再次将它们哈希到32位。
答案 1 :(得分:0)
不,不可能避免保留以前看到的所有数字。
为此,哈希表可能是最合适的。
可能是通过压缩或利用数据的某些属性来节省(边际),但你还没有告诉我们很多。