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