1.题目
题目分析:
给一个数组,然后找到最大值位置的索引,也就是峰值的索引。
2.算法原理
较为明显的二段性,像金字塔模样,就可以用二分查找来解决,最大值是在左边区域,所以处理时left=mid,而不是mid+1,因为mid可能就是最终值,而right则就right=mid了,然后mid的值就是left+(right-left+1)/2,避免死循环了。
3.代码实现
class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left=0,right=arr.size()-1;while(left<right){int mid=left+(right-left+1)/2;if(arr[mid]>arr[mid-1]) left=mid;else right=mid-1;}return left;}
};