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

「优选算法」:山脉数组的峰顶索引

一、题目

符合下列属性的数组 arr 称为 山脉数组 :

  • arr.length >= 3
  • 存在 i0 < i < arr.length - 1)使得:
    • arr[0] < arr[1] < ... arr[i-1] < arr[i]
    • arr[i] > arr[i+1] > ... > arr[arr.length - 1]

给你由整数组成的山脉数组 arr ,返回满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i 。

你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。

示例 1:

输入:arr = [0,1,0]
输出:1

示例 2:

输入:arr = [0,2,1,0]
输出:1

示例 3:

输入:arr = [0,10,5,2]
输出:1

二、思路解析

查找的题目,我一般都用二分查找解决的。

并且这道题还有一个可以小优化的地方:最左和最右这两个元素一定不可能是峰值元素,根据定义即可推出。

然后就是二分查找的算法具体实现了👇

三、完整代码

class Solution {public int peakIndexInMountainArray(int[] arr) {// 小优化int left = 1;int right = arr.length - 2;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.lryc.cn/news/298584.html

相关文章:

  • 网络安全红队基础建设与介绍
  • Java语法学习反射
  • 【MySQL】操作库 —— 库的操作 -- 详解
  • Rust安装——Win10
  • 【教学类-46-07】20240212立体春字1.0
  • Python语言例题集(003)
  • UE5 播放本地MP3、MP4
  • NLP_“预训练+微调大模型”模式和Prompt/Instruct模式的异同
  • 普通人应该如何使用GPT
  • pycharm像jupyter一样在控制台查看后台变量
  • Ansible command命令模块 这个模块可以直接在远程主机上执行命令,并将结果返回本主机。
  • C语言-3
  • Quartus工程的qsf配置约束文件介绍
  • 【网工】华为设备命令学习(Telnet)
  • 搜索专项---最短路模型
  • 安装PostgreSQL和PostGIS
  • MySQL-----DCL基础操作
  • Unity报错Currently selected scripting backend (IL2CPP) is not installed
  • LeetCode79. Word Search——回溯
  • Linux命令-blkid命令(查看块设备的文件系统类型、LABEL、UUID等信息)
  • 服务治理中间件-Eureka
  • Javaweb之SpringBootWeb案例之异常处理功能的详细解析
  • 苹果Mac键盘如何将 F1 到 F12 取消按Fn
  • linux下ipconfig命令报:command not found 解决方法
  • Android导入其它项目慢,Gradel下载失败,另辟蹊径:使用离线gradle加载,附镜像方式
  • 神经语言程式(NLP)项目的15 个开源训练数据集
  • H5 红色文字抖动网址发布页/引导页源码
  • MacOS - 菜单栏上显示『音量』
  • 深入理解常见的设计模式
  • 服务器解析漏洞及任意文件下载