当前位置: 首页 > 面试题库 >

在数组中搜索前一个元素的每个元素+1或-1的数字[关闭]

陶英纵
2023-03-14
问题内容

整数数组包含一些元素,以使每个元素比其前一个元素多1个或小于1个。现在给了一个数字,我们需要确定该数字在数组中首次出现的索引。需要优化线性搜索。它不是功课。


问题答案:

我的算法是这样的:

  1. p = 0
  2. 如果(A [p] == x)则idx = p并且算法完成,否则转到下一步
  3. 设置p + = | xA [p] |
  4. 转到2。

说A [p]> x。然后,由于A项增加或减少1,因此idx至少可以确定与p的索引(A[p]-x)。A[p]<x的原理相同。

int p=0, idx=-1;
while (p<len && p>=0)
   if (A[p]==x)
       idx = p;
   else
       p+= abs(x-A[p]);

时间复杂度:最坏的情况是O(n)。我希望平均情况比O(n)好(我认为是O(logn),但不确定)。运行时间:在所有情况下,绝对比线性搜索好。



 类似资料:
  • 我被分配了一项编程任务,但我被卡住了。其说明如下: 有一个名为“秘密圣诞老人”(给他们礼物)的游戏,有很多孩子参加。对于每个参与的孩子,都有一个来自参与孩子的秘密圣诞朋友。我必须编写一个程序,为每个参与的孩子挑选一个秘密的圣诞老人朋友。 示例:如果Bob,Alice,John和George是参与的孩子,在随机选择之后, 输出可能看起来像 具有相同输入的连续两次程序运行不应有相同的结果。 我的想法是

  • 我只想在数组中的第一个元素上搜索对象,而忽略其余的元素。例如,对于下面的数据,如果我只想在中搜索数组中的第一个元素。 我知道我可以这样做一个嵌套查询,但这里的问题是所有的车辆都被搜索。我只希望车辆列表中的第0个元素被搜索,其余的被忽略。 理想情况下,我需要类似这样的东西来每次搜索列表中的第一辆车。有什么方法可以有效地做到这一点吗?

  • 问题内容: 在这里,我再次提出基本问题,但请耐心等待。 在Matlab中,将数字添加到列表中的元素非常简单: 然后是 在python中,这似乎不起作用,至少在列表上。 是否有一种简单的快速方法将单个数字加到整个列表中。 谢谢 问题答案: 如果要使用数字列表进行操作,最好使用NumPy数组: 给

  • https://www.geeksforgeeks.org/count-of-larger-elements-on-right-side-of-each-element-in-an-array/#:~: text=朴素的做法:最简单的做法,一边然后打印出来。 我试图以大于左边数字的顺序计算数字,就像上面网站上描述的那样,但网站中的输出是arraylist,但我只想要一个数字,它是arraylist

  • 问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King