当有多个峰时如何在数组中查找峰元素?

问题描述 投票:0回答:4

对于具有单个峰元素的数组,可以使用二进制搜索在o(logn)中完成,但是如果数组中有多个峰元素,我们应该使用哪种方法?

-提供更多信息----峰值元素比它的邻居元素更大,例如,看下面的数组,>

[1,3,20,4,1,0,7,5,2]

其中有2个峰,分别是20和7。

我们需要设计一种算法来查找此阵列中的峰元素。

对于具有单个峰元素的数组,可以使用二进制搜索在o(logn)中完成,但是,如果数组中有多个峰元素,我们应该使用哪种方法? ---放入更多...

java arrays algorithm binary-search
4个回答
0
投票

我可能不明白您的问题,因为要在O(logn)中查找单个峰需要首先对数组进行排序。


0
投票

这个想法是使用修改过的二进制搜索。


0
投票

用于在具有多个峰时查找所有峰元素。


0
投票

我最近在一个编程网站上遇到了类似的问题,但是除了发现峰值以外,还有另一个重要的限制。首先,可能有多个高峰,但也可能有高原!平稳是发生在arr中的东西:[1,2,2,2,1],在这种情况下,我们必须将峰返回为2。在问题中,我们还被要求返回峰的第一个位置发生,因此在这种情况下,它将是position =1。唯一需要注意的是arr:[1,2,2,2,3,4,5,1]中存在峰值在倒数第二个位置中有5个,但即使在第一眼看上去有一系列重复的情况下,也没有平稳的迹象。

© www.soinside.com 2019 - 2024. All rights reserved.