算法搜索数组中的元素

时间:2014-03-08 12:45:25

标签: algorithm

这是另一个面试问题

如果前一个元素为x+1,则数组包含下一个元素可以是x-1x的元素。

Prev element = x
Next element = x+1/ x-1

示例:{2, 3, 4, 3, 2, 1, 0, -1, 0, 1, 2, 3, 2, 1}

如果我需要搜索0什么是最佳算法我们可以选择?

如果我对它进行排序,那么它将是O(nlogn),我可以在O(n)中遍历数组,所以O(n)仍然更好

创建二进制搜索树将再次为O(n),并且在BST中搜索为O(log),因此仍然是O(n)。

它是一个随机数组,下一个元素是+1或-1不会导致任何搜索模式。 如果你们可以想到任何可以在这里使用的搜索模式来执行更好的搜索,请告诉我。

1 个答案:

答案 0 :(得分:3)

显而易见的事情是:

  1. 考虑第一个值,假设值为n。是0吗?
  2. 如果是的话,你就完成了。
  3. 如果没有,请前进abs(n)元素,然后转到步骤1.
  4. 您可以跳过多个元素,因为两个相邻值之间的绝对差值始终为1.

    因此,考虑到问题中的数组,您可以执行以下操作:

    • 项目0是2.那不是零,所以你步骤到第2项。
    • 第2项是4.这不是零,向前推进4项到第6项。
    • 第6项是0.你完成了。