思路
峰值,即左右数字都小于3,记为峰值。从1 开始遍历数组,只要前一个值比后一个大,则为峰值
代码:
int findPeakElement(vector<int>& nums) {
for(int i=1;i<nums.size();i++){
if(nums[i]<nums[i-1])
return i-1;
}
return nums.size()-1;
}
思路2
二分查找
int findPeakElement(vector<int>& nums) {
int low=0;
int high=nums.size()-1;
while(low<high){
int mid=(low+high)>>1;
if(nums[mid]>nums[mid+1])
high=mid;
else if(nums[mid]<nums[mid+1])
low=mid+1;
}
return low;
}