链接:852. 山脉数组的峰顶索引 - 力扣(LeetCode)
题解:
事实证明,二分查找不局限于有序数组,非有序的数组也同样适用
二分查找主要思想在于二段性,即将数组分为两段。本体就可以将数组分为arr[i]>=arr[i-1]部分和arr[i]<arr[i-1]的两部分,我们实际上查找的是arr[i]>=arr[i-1]部分的最右端点,因此本题使用二分查找的右端点版本。
class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left=0;int right=arr.size()-1;int mid=left+(right-left+1)/2;while(left<right){if(arr[mid]<arr[mid-1]){right=mid-1;mid=left+(right-left+1)/2;}else{left=mid;mid=left+(right-left+1)/2;}}return left;}
};