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