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

思路

二分查找算法

注意二段性

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

peak后arr[mid] >arr[mid + 1]

c++ 复制代码
#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;
    }
};
相关推荐
Haohao+++2 小时前
Stable Diffusion原理解析
人工智能·深度学习·算法
ideaout技术团队5 小时前
leetcode学习笔记2:多数元素(摩尔投票算法)
学习·算法·leetcode
代码充电宝5 小时前
LeetCode 算法题【简单】283. 移动零
java·算法·leetcode·职场和发展
不枯石8 小时前
Matlab通过GUI实现点云的均值滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab·均值算法
不枯石8 小时前
Matlab通过GUI实现点云的双边(Bilateral)滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab
白水先森10 小时前
C语言作用域与数组详解
java·数据结构·算法
想唱rap10 小时前
直接选择排序、堆排序、冒泡排序
c语言·数据结构·笔记·算法·新浪微博
老葱头蒸鸡11 小时前
(27)APS.NET Core8.0 堆栈原理通俗理解
算法
视睿11 小时前
【C++练习】06.输出100以内的所有素数
开发语言·c++·算法·机器人·无人机
保持低旋律节奏12 小时前
CPP——OJ试题,string、vector、类(题三)初步应用
c++