Skip to content
On this page

162. 寻找峰值

原题链接:LeetCode 162. 寻找峰值

题目描述

峰值元素是指其值严格大于左右相邻值的元素。

给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。

你可以假设 nums[-1] = nums[n] = -∞

你必须实现时间复杂度为 O(log n)* *的算法来解决此问题。

示例 1:

[1,2,3,1]

示例 2:

[

提示:

- `1 <= nums.length <= 1000`

-231 <= nums[i] <= 231 - 1
- 对于所有有效的 `i` 都有 `nums[i] != nums[i + 1]`

难度: Medium


题解代码

javascript
/**
 * @param {number[]} nums
 * @return {number}
 */
var findPeakElement = function(nums) {
  let l = 0, r = nums.length - 1;
  while(l < r) {
    let mid = Math.floor(l + (r - l) / 2)
    if (nums[mid] < nums[mid + 1]) {
      l = mid + 1
    } else {
      r = mid
    }
  }
  return l
};

技术文档集合