一.网直页达
https://leetcode.cn/problems/B1IidL/
二.题目解析

分析:我们发现数组就像一个山峰一样的,会有一个最高点
解法一:暴力解法

我们现在来进行优化,,我们发现,峰值两边都会有单增加和单减的特性,我们发现数组分成了两部,即具有二段性,我们就可以使用二分查找法
解法二:二分查找法
mid=left+(right-left)/2

三.代码实现
1.无注释:
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int left=1,right=arr.size()-2;
while(left<right)
{
int mid=left+(right-left+1)/2;
if(arr[mid]>arr[mid-1]) left=mid;
else right=mid-1;
}
return left;
}
};
2.注释详解
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int left=1,right=arr.size()-2;//俩边的数是直接成立的
while(left<right)
{
int mid=left+(right-left+1)/2;//中间值需要考虑数据溢出的问题
if(arr[mid]>arr[mid-1]) left=mid;
else right=mid-1;//我们要找的是峰值,所以需要向左移动
}
return left;
}
};