【发布时间】:2011-11-16 19:28:43
【问题描述】:
我在一次采访中被问到这个问题。考虑打孔卡的场景,其中每张打孔卡具有 64 位模式。有人建议我将每张卡片设为int,因为每个 int 都是位的集合。
另外,考虑到我有一个已经包含 1000 张此类卡片的数组。我每次都必须生成一个与之前的 1000 张卡片不同的新元素。数组中的整数(又名卡片)不一定是排序的。
更重要的是,这怎么可能是 C++ 的问题,64 bit int 来自哪里以及如何从要生成的元素不同于所有元素的数组中生成这张新卡已经存在在数组中?
【问题讨论】:
-
也许我理解错了。每个新生成的数字都必须与之前的 all 不同,还是每次都删除第一个元素?在这种情况下,O(1000) = O(1) 的解可以简单地公式化。
-
@larsmans:要求新生成的整数与之前的所有整数不同。