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

[优选算法专题三.二分查找——NO.21山脉数组的峰顶索引]

题目链接:

852. 山脉数组的峰顶索引

题目描述:

题目解答:


  • 初始化指针int left = 1, right = arr.size() - 2;初始化左右指针,因为山脉数组的峰值不可能是数组的第一个和最后一个元素,所以left从 1 开始,rightarr.size() - 2开始。
  • 二分查找循环while (left < right)是二分查找的循环条件,当left小于right时,说明查找范围仍然存在,继续循环。
  • 计算中间位置int mid = left + (right - left + 1) / 2;计算中间位置mid(right - left + 1) / 2这样计算可以确保在leftright较大时,不会出现整数溢出的问题,并且在leftright差值为 1 时,mid会取到right的值。
  • 更新指针:如果arr[mid] >= arr[mid - 1],说明mid位置可能是峰值或者仍处于山脉数组的上升阶段,峰值在mid及其右侧,所以将left更新为mid;否则,说明mid处于山脉数组的下降阶段,峰值在mid的左侧,将right更新为mid - 1
  • 返回结果:循环结束后,leftright相等,它们指向的位置就是峰值索引,代码中return rightreturn left效果相同,因为此时二者相等。

例如,对于数组arr = {0, 1, 2, 3, 2, 1, 0},初始时left = 1right = 5,第一次循环mid = 3arr[3] >= arr[2],则left更新为 3;第二次循环mid = 4arr[4] < arr[3],则right更新为 3,此时left == right,循环结束,返回 3,即峰值索引。

http://www.dtcms.com/a/402958.html

相关文章:

  • 湖南营销型网站建设推广如何更改网站标题
  • 云原生网络基础设施的核心组件Envoy
  • KubeSphere 社区版即将发布:开启云原生新篇章
  • K8s学习笔记(五) Velero结合minnio业务数据备份与恢复
  • 23种设计模式——组合模式(Composite Pattern)
  • 培训机构网站开发汉中杨海明
  • 2- 十大排序算法(希尔排序、计数排序、桶排序)
  • 哈尔滨服务器托管优选-青蛙云
  • 【MySQL】JDBC
  • sogoupinyin输入法,LINUX版输入中文不显示中文
  • 自动化运维工具 Ansible:集中化管理服务器完全指南
  • 电影网站的建设目标做网站的公司简称什么行业
  • 【ThreeJs】【HTML载入】Three.js 中的 CSS2DRenderer 与 CSS3DRenderer 全面解析
  • (50)elasticsearch服务部署-有状态负载(华为云平台CCE)
  • 【时序预测-5】FFT、STL、ARIMA频域特征和时序分解
  • Kotlinx Serialization 指南
  • SpringBoot @Scheduled 注解详解
  • layui 表格行级 upload 上传操作
  • 【Unity 入门教程】三、如何设置自定义字体(解决中文乱码问题)
  • STM32开发(FreeRTOS实时操作系统)
  • RocketMQ-生产常见问题汇总
  • 成都网站托管外包施工企业科技宣传片
  • 小厂 Java 面试,难度怎么样?
  • Webpack5 第一节
  • 【深入理解JVM】常见的垃圾回收器
  • 东莞企业建设网站官网有限公司百度一下百度网页版主页
  • 【大模型:知识图谱】--7.Neo4j数据库的导入和导出
  • 数据结构与算法(栈)
  • Coze源码分析-资源库-创建数据库-后端源码-基础设施/数据存储层
  • PySpark 安装教程及 WordCount 实战与任务提交