解题思路:
- 本题中给出的山脉数组是已经排好顺序了,并且需要返回的是最大值索引,所以采用二分查找思想,这里需要更改下判断策略
class Solution {
public:
// 二分查找算法
int peakIndexInMountainArray(vector<int>& arr) {
int left = 0,right = arr.size();
while(left < right){
int mid = left + (right - left)/2;
// 本题中题目给出arr.length>=3,无需考虑数组越界问题
// 给出的所有元素不存在等号的情况,不需要在判断时加入等号
// 分情况判断
if(arr[mid] > arr[mid-1] && arr[mid]>arr[mid+1]){
return mid;
}else if(arr[mid] > arr[mid-1] && arr[mid+1]>arr[mid]){
left = mid +1;
}else if(arr[mid]<arr[mid-1] && arr[mid+1]<arr[mid]){
right = mid;
}
}
return left;
}
};