峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组,其中 num[i] ≠ num[i+1],找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回到任何一个峰值所在位置都可以。
你可以想象得到 num[-1] = num[n] = -∞。
例如,在数组 [1, 2, 3, 1]中 3 是峰值元素您的函数应该返回索引号2。
注意:
你的解决方案应该是对数复杂度的。
详见:https://leetcode.com/problems/find-peak-element/description/
Java实现:
class Solution {
public int findPeakElement(int[] nums) {
int n=nums.length;
if(n==0){
return -1;
}
int left=0;
int right=n-1;
while(left<right){
int mid=(left+right)>>1;
if(nums[mid]<nums[mid+1]){
left=mid+1;
}else{
right=mid;
}
}
return right;
}
}