【发布时间】:2012-09-26 05:59:41
【问题描述】:
我收到了这个关于硬件的问题,但我不知道该怎么做:
数组 A[1...n] 包含从 0 到 n 的所有整数,除了一个。数组未排序。
在这个问题中,我们无法通过单个操作访问 A 中的整个整数。
A 的元素以二进制表示,我们可以用来访问它们的唯一操作是“获取 A[i] 的第 j 位”,这需要恒定的时间。
我必须在 O(n) 时间内找到丢失的整数。
正常情况下需要的时间是 O(NlgN) (在 N 数组上运行,并获取所有 N - lgn 位函数的位)。
如果不阅读所有位,我该怎么做?
【问题讨论】:
-
还有其他属性吗?例如。数组中的数字是有序的吗?否则,每个位都至少看一次是不可能的。
-
另外,请发布您现在的解决方案。
-
提示:分而治之。显然,您首先需要检查所有数字中的一些,但是在您这样做之后是否有必要再次检查 all 数字的下一位?
-
@Jon 这对随机排序的数组有什么帮助?
-
@Jon 不,提示有助于理解。您提供的内容纯属通用陈词滥调。
标签: algorithm