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

二分查找-852.山峰数组的峰顶索引-力扣(LeetCode)

一、题目解析

 1.山峰数组数据严格满足arr[0]<arr[1]……<arr[i]>arr[i+1]……arr[arr.size()-1]

2.时间复杂度要求为O(logN)

二、算法解析

解法1:暴力解法-O(N)

遍历数组arr,结合山峰数组性质,我们发现峰顶存在arr[i]>arr[i-1],即圆圈大于三角形,返回索引也就是arr数组的下标,由于遍历数组且最坏情况只有一个三角,也需要遍历n-1的元素,所以时间复杂度属于O(N)

 解法2:二分查找-O(logN)

 二段性

 结合图像和题目的性质,我们可以把山峰数组分为两段,这是我们使用二分查找时,所需要总结或分析的性质

三、代码示例

解法2:

class Solution {
public: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.xdnf.cn/news/16143.html

相关文章:

  • 【coze扣子】第1篇:coze快速入门
  • 【Spring AI 0基础教程】1、基础篇 环境搭建 - 智能天气预报助手
  • csp基础知识——递推
  • OpenCV快速入门之CV宝典
  • axios统一封装规范管理
  • oracle查询数据结构滤涉及的sql语句
  • Oracle 12c 创建数据库初级教程
  • 消息队列学习
  • .net 警告【代码 CS1998】此异步方法缺少 “await“ 运算符,将以同步方式运行。
  • VRRP技术
  • 基于springboot的医院管理系统(源码+论文+开题报告)
  • AWS RDS 排查性能问题
  • 【AI总结】网线技术演进史:从语音电缆到40Gbps的蜕变之路
  • 7.22总结mstp,vrrp
  • Android perfetto 工具使用
  • 浅谈——游戏中的各种配置格式
  • Excel file format cannot be determined, you must specify an engine manually.
  • 【音视频协议篇】RTMP协议
  • 一、Vue概述以及快速入门
  • [IMX][UBoot] 16.Linux 内核移植
  • 智算中心光纤线缆如何实现自动化计算?
  • 初识卷积神经网络CNN
  • (12)机器学习小白入门YOLOv:YOLOv8-cls 模型微调实操
  • 为何在 Vue 的 v-model 指令中不能使用可选链(Optional Chaining)?
  • 开发浏览器插件-保存页面元素数据为json或csv
  • 2.9学习DOM和BOM (主要是获取元素的操作)
  • 苍穹外卖DAY10
  • 如何用 LUKS 和 cryptsetup 为 Linux 配置加密
  • Flink框架:keyBy实现按键逻辑分区
  • Linux物理地址空间入门:从硬件到内核内存的基石