每天一道算法题蓝桥杯山脉数组的峰顶索引
目录
每天一道算法题【蓝桥杯】【山脉数组的峰顶索引】
思路
二分查找算法
注意二段性
两段性为peak前arr[mid] < arr[mid + 1]
peak后arr[mid] >arr[mid + 1]
#define _CRT_SECURE_NO_WARNINGS 1
#include<vector>
using namespace std;
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int left = 0, right = arr.size() - 1, mid = 0; //置二分查找左右指针
while (left < right)
{
mid = left + (right - left) / 2;
if (arr[mid] < arr[mid + 1])left = mid + 1; //两段性为peak前arr[mid] < arr[mid + 1]
else right = mid; //peak后arr[mid] >arr[mid + 1]
}
return left;
}
};