【发布时间】:2014-02-07 11:53:27
【问题描述】:
给定一个数组首先增加然后在某个点减少然后再次增加? 查找给定数 N 是否存在于数组中。
示例 1:
Array = 7,8,3,4,5,6
number = 7
答案应该是真的。
示例 2:
Array = 3,4,6,7,8,5,9,10,11
number = 10
答案应该是真的。 所有数字都是唯一的。
可以通过O(N)中的线性搜索来完成,
我们能不能做得比这少。 (更高效)
【问题讨论】:
-
一般来说,线性搜索和非线性数组一样好
-
修改后的三元搜索怎么样,运行两三遍?也许你可以得到
O(log N)时间复杂度? -
否,对于未排序的数组搜索(存在查找),难度为 O(N)。
-
我认为我们不能将其视为简单的未排序数组,因为数组已经具有结构。例如,我们可以在线性时间内对这个数组进行排序。但 user2357112 的示例表明,这种结构最终并不能帮助我们进行搜索。