162. 寻找峰值(leetcode)
https://leetcode.cn/problems/find-peak-element/description/
class Solution {
public int findPeakElement(int[] nums) {
// 需要依据题意来证明一个定理
// i~n-1中切nums[i]<nums[i+1],则i+1~n-1一定存在至少一个峰值
// 则峰值具有二段性
return lowerBound(nums);
}
int lowerBound(int[] nums)
{
int l=0,r=nums.length-2;
while(l<=r)
{
int mid=l+(r-l>>1);
// mid一定不是答案,则答案一定在右侧
if(nums[mid]<=nums[mid+1])l=mid+1;
else r=mid-1;
}
return l;
}
}