无脑二分查找就行,也没有什么技术含量。
注意:有一点小点需要注意,在判断的时候最好不要用区间的二分查找,这里并不是说有一个明确的值让你进行比较,而是动态的目标数,所以尽量不要使用区间二分的模板,应该使用最常规的模板。退出的循环返回值随便一个值就行,也没必要纠结这个问题,只是为了形式上正确就行。
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int right=arr.size()-1;
int left=0;
while(left<right){
int mid=(right+left)/2;
if(arr[mid+1]>arr[mid])
left=mid+1;
else if(arr[mid-1]>arr[mid])
right=mid-1;
else return mid;
}
return left;
}
};