每天一道算法题【蓝桥杯】【山脉数组的峰顶索引】

每天一道算法题【蓝桥杯】【山脉数组的峰顶索引】_第1张图片

思路

二分查找算法

注意二段性

两段性为peak前arr[mid] < arr[mid + 1]
peak后arr[mid] >arr[mid + 1]

#define _CRT_SECURE_NO_WARNINGS 1
#include
using namespace std;
class Solution {
public:
    int peakIndexInMountainArray(vector& 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;
    }
};

你可能感兴趣的:(题解,算法,蓝桥杯,c++,leetcode)