在一维数组中查找多个峰值

Finding Multiple Peaks In a 1D Array

在此 MIT lecture and written out in this SO question 中描述的用于在 1d 数组 中找到 a 峰的算法是有意义的。

它对 O(log n) 的分析也是如此; 我们将数组分成两半

如何更新它以在数组中找到 所有 个峰?复杂度是多少?

要找到所有峰值,除了遍历整个数组并将每个元素与其相邻元素进行比较之外,没有比这更好的了。没有办法判断你没看的元素是不是峰,所以你必须看所有的元素。

因此,n 个元素的时间复杂度为 O(n)。