题目分析:
通过题目,我们发现这题的本质是寻找一段数组范围内的最大值,我们可以通过不断的缩小数组范围来寻找目标值,由缩小数组范围我们可以联想到二分查找,但是此二分查找有一不同点,就是中值不是同左右界值进行比较,而是和中值相邻的数值进行比较,究其原因是因为峰值的特点是大于相邻值。
代码:
class Solution {
public:
int findPeakElement(vector<int>& nums)
{
int left=0,right=nums.size()-1,mid=0;
while(left<right)
{
mid=(left+right)/2;
if(nums[mid]>nums[mid+1])
{
right=mid;
}
else
{
left=mid+1;
}
}
return right;
}
};