Skip to content
On this page

852. 山脉数组的峰顶索引

原题链接:LeetCode 852. 山脉数组的峰顶索引

题目描述

给定一个长度为 n 的整数 **山脉 **数组 arr ,其中的值递增到一个 峰值元素 然后递减。

返回峰值元素的下标。

你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。

示例 1:

  • 输入: arr = [0,1,0]
  • 输出: 1

示例 2:

  • 输入: arr = [0,2,1,0]
  • 输出: 1

示例 3:

  • 输入: arr = [0,10,5,2]
  • 输出: 1

提示:

  • 3 <= arr.length <= 105
  • 0 <= arr[i] <= 106
  • 题目数据 保证 arr 是一个山脉数组

难度: Medium


题解代码

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

技术文档集合