题目:
难度:Middle
相关话题:数组
、二分查找
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums
,其中 nums[i] ≠ nums[i+1]
,找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞
。
示例 1:
输入: nums = [1,2,3,1]
输出: 2
解释:3 是峰值元素,你的函数应该返回其索引 2。
示例2:
输入: nums = [1,2,1,3,5,6,4]
输出: 1 或 5
解释: 你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。
说明:
你的解法应该是O (logN )** 时间复杂度的。
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {number[]} nums
* @return {number}
*/
var findPeakElement = function(nums) {
// for(let i=1;i<nums.length;i++){
// if(nums[i]<nums[i-1])return i-1
// }
// return nums.length-1
var n=nums.length;
var l=0, r=n-1;
while(l<r) {
var mid = Math.floor((l+r)/2);
if(nums[mid]<nums[mid+1]) {
l=mid+1;
} else {
r=mid;
}
}
return l;
};
扩展阅读: