1. 山脉数组的峰顶索引
题目描述:

示例:

题目链接: 山脉数组的峰顶索引
题解:
第一步:
首先确定二段性,把顶峰放到左区间还是右区间取决于你自己,会根据取法不同而导致代码不同,但是都能求出顶峰索引。这里我们放到左区间。

第二步:
按照我们的划分方式,要确保左边区间不会越过分界,右边区间同理,就要用 mid 和 mid-1 这种划分方式。如果在左区间,那么 mid 会有等于峰顶索引,即 left = mid;如果在右区间,mid 及其后面的值都不可能是峰顶索引,即 right = mid - 1。

细节问题:
对于二分查找进阶模版,如果在 if 语句的函数体里有减法操作时,那么计算 mid 的公式就要 +1。
代码实现:
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
int peakIndexInMountainArray {
left = , right = arr.() - ;
(left < right) {
mid = left + (right - left + ) / ;
(arr[mid] > arr[mid - ]) {
left = mid;
} {
right = mid - ;
}
}
right;
}
};














