Menu
CoddyTech

Find Peak Element

中等二分查找python iconjava iconcpp iconc iconjs icon+10

数组 nums 先递增再递减:直到某个索引为止,每个值都大于前一个值;该索引之后的每个值都小于前一个值。任一部分都可以为空,因此数组可能只递增或只递减。转折索引处的值就是峰值,它是唯一一个大于其所有相邻值的值。

请在 O(log n) 时间内返回峰值的索引。

函数

findPeakElement(nums: integer-array) → integer
numsinteger-array
这些值先逐渐增大,达到一个峰值后再逐渐减小。
返回值integer
峰值的索引

约束条件

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] 对每个有效的 i 都成立。
  • nums 严格递增到某个索引为止,之后严格递减,因此恰好有一个峰值。

示例

输入
nums = [2, 5, 9, 4, 1]
输出
2
解释
这些值依次升到 2、5 和 9,然后降到 4 和 1。转折点是 9,索引为 2。
challenge icon

进阶

在一个任意两个相邻单元格都不相等的网格中,峰值是一个大于最多四个相邻单元格的单元格。你能不能不读取每个单元格就找到一个峰值?

重置代码
def findPeakElement(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [2, 5, 9, 4, 1]

预期输出

2