这是 Steven Skiena 的“算法设计手册”第 2 版,第 143 页的家庭作业。
假设给定一个不同整数的排序序列,
{A1,A2,...An}
从where抽取。给出一个算法来找到一个不存在于 中的整数。对于完整的信用,找到最小的这样的整数。1
m
n < m
O(lgN)
<= m
A
排序后的序列,O(lgN)
两者都建议使用二进制搜索算法。我能想到的唯一方法是遍历从1
through中的数字m
,并对每个数字进行二分搜索以查看它是否按顺序存在A
。但这意味着O(mlgN)
,不是真的O(lgN)
。