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

二分查找-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.dtcms.com/a/292244.html

相关文章:

  • 力扣 hot100 Day52
  • LeetCode 633.平方数之和
  • XML高效处理类 - 专为Office文档XML处理优化
  • Mysql-场景篇-2-线上高频访问的Mysql表,如何在线修改表结构影响最小?-1--Mysql8.0版本后的INSTANT DDL方案(推荐)
  • 【MySQL】MySQL基本概念
  • NISP-PTE基础实操——命令执行
  • MySQL高可用主从复制原理及常见问题
  • mysql_innodb_cluster_metadata源数据库
  • n1 armbian docker compose 部署aipan mysql
  • 板凳-------Mysql cookbook学习 (十二--------5)
  • vue3实现高性能pdf预览器功能可行性方案及实践(pdfjs-dist5.x插件使用及自定义修改)
  • Redis高级篇之最佳实践
  • VUE 中父级组件使用JSON.stringify 序列化子组件传递循环引用错误
  • TDengine时序数据库 详解
  • 扣子Coze智能体实战:自动化拆解抖音对标账号,输出完整分析报告(喂饭级教程)
  • STM32-SPI全双工同步通信
  • 什么是分布式事务,分布式事务的解决方案有哪些?
  • PyTorch 模型开发全栈指南:从定义、修改到保存的完整闭环
  • 自编码器表征学习:重构误差与隐空间拓扑结构的深度解析
  • vue2.0 + elementui + i18n:实现多语言功能
  • 智能Agent场景实战指南 Day 18:Agent决策树与规划能力
  • SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:权限管理(三)
  • Class10简洁实现
  • 图解Spring的循环依赖
  • 2025茶吧机语音控制集成方案
  • 深入解析Hadoop中的推测执行:原理、算法与策略
  • 【华为机试】684. 冗余连接
  • Python编程进阶知识之第三课处理数据(numpy)
  • LSTM+Transformer炸裂创新 精准度至95.65%
  • 【C++】复习重点-汇总2-面向对象(三大特性、类/对象、构造函数、继承与派生、多态、抽象类、this/对象指针、友元、运算符重载、static、类/结构体)