题目
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
思路
使用二分搜索法。
如果nums[i]>nums[i+1],则在i的左侧,一定有峰值。
如果nums[i]<nums[i+1],则在i+1的右侧,一定有峰值。
代码
class Solution {
public int findPeakElement(int[] nums) {
int left=0;
int right=nums.length-1;
while(right>left){
int mid=left+(right-left)/2;
if(nums[mid]>nums[mid+1]){
right=mid;
}
else if(nums[mid]<nums[mid+1]){
left=mid+1;
}
}
return right;
}
}