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
};

技术文档集合