在falses海中寻找真实的岛屿

时间:2017-11-19 12:39:42

标签: algorithm search time-complexity

假设我有一个看起来像

的数组
[False, False, ..., False, True, True, True, ..., True, False, False, ...]

即,一个False的块,后跟一个True块,然后是另一个False块。任何这些块的大小都可以为零。

是否有一个次线性算法来查找第一个True的索引(如果存在)?如果没有True,这样的算法可以返回len(array)

我知道如果没有第二个False块,这可以在O(lg n)时间内完成(基本上只是二进制搜索)。但我真的不知道如何在线搜索这个案例,而且我找不到任何说这种算法存在的东西,或者说没有可能。

1 个答案:

答案 0 :(得分:5)

不,最坏的情况必须是O(n) - 无论你选择哪种顺序来检查数组,都可能有一个真正的内部,它最终会出现在你看到的最后一个索引中。

编辑:实际上,即使是最简单的最坏情况也是根本没有真实的情况。如果不查看数组的每个元素,就无法确定。