当前位置: 首页 > article >正文

算法:852.山脉数组的峰顶索引

题目

链接:leetcode链接
在这里插入图片描述

思路分析(二分算法)

题目的提示已经非常明显了,使用O(logN)的算法,那就是二分算法。

如何寻找二段性?

观察数据,可以发现,需要找的峰顶索引的左右两侧数据有不同的特征
峰顶索引左边的数据都比前一个数据大
峰顶索引右边的数据都比前一个数据小

根据此二段性,我们就可以设计出二分算法了

细节:

  1. left < right(不用等号)
  2. mid = left + (right - left + 1) / 2 ( 寻找右边界)

代码

int peakIndexInMountainArray(vector<int>& arr) {
        int left = 0,right = arr.size() - 1;

        while(left < right)
        {
            int mid = left + (right - left + 1) /2;
            if(arr[mid] > arr[mid - 1]) left = mid;
            else right = mid - 1;
        }

        return left;
    }

http://www.kler.cn/news/332125.html

相关文章:

  • 【论文写作】使用MSE评价如何描述模型优劣
  • 知识图谱入门——5:Neo4j Desktop安装和使用手册(小白向:Cypher 查询语言:逐步教程!Neo4j 优缺点分析)
  • FFT 分析基础-笔记
  • js列表数据时间排序和取唯一值
  • 【数据结构强化】应用题打卡
  • Spring Boot中使用ThreadPoolTaskScheduler实现轻量级多线程定时任务
  • 春日时尚:Spring Boot助力“衣依”服装销售平台
  • 【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
  • ClickHouse 引擎的选择
  • 【Spring】@RequestMapping、@RestController和Postman
  • GIT 迁移到GIT
  • (JAVA)队列 和 符号表 两种数据结构的实现
  • day22 Collection 迭代器 增强for List
  • 启动服务并登录MySQL9数据库
  • [C++]使用纯opencv部署yolov11目标检测onnx模型
  • 如何使用ChatGPT API及Bito插件
  • Iterm2配置主题和Oh-My-Zsh
  • 螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下docker学习02(yum源切换及docker安装配置)
  • 动手测试:CPU的L1~L3级缓存和内存的读取速度测试
  • 深入理解.NET中的委托与事件:实现灵活的事件驱动编程