当前位置: 首页 > 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.lryc.cn/news/596079.html

相关文章:

  • 函数——C语言的重要部分
  • React Three Fiber 实现昼夜循环:从光照过渡到日月联动的技术拆解
  • 金山办公WPS项目产品总监陈智新受邀为第十四届中国PMO大会演讲嘉宾
  • 两个android,一个客户端一个服务器端
  • 深入解析 Spark:关键问题与答案汇总
  • 在easyui中如何自定义表格里面的内容
  • Python爬虫实战:研究pymorphy2库相关技术
  • Python爬虫实战:研究PyPLN库相关技术
  • 【文献笔记】ARS: Automatic Routing Solver with Large Language Models
  • PHP获取淘宝拍立淘(以图搜图)API接口操作详解
  • 如何迁移jenkins至另一台服务器
  • 一个基于现代C++智能指针的优雅内存管理解决方案
  • 探索飞算JavaAI:AI赋能Java开发的新范式
  • docker 设置镜像仓库代理
  • 碰一碰发视频源码搭建:支持OEM
  • 初识opencv01——基本api操作
  • 分布式高可用ELK平台搭建及使用保姆级教程指南
  • 大数据之Hive:Hive中week相关的几个函数
  • 分布式数据库中间件ShardingSphere
  • Protobuf学习
  • SysMind:Go 语言驱动的AI系统运维助手
  • 用Python实现神经网络(六)
  • 【计算机网络 篇】TCP基本认识和TCP三次握手相关问题
  • WebSocket心跳机制实现要点
  • 深入浅出理解 TCP 与 UDP:网络传输协议的核心差异与应用
  • 基于SpringBoot+Vue的高校特长互助系统(WebSocket实时聊天、协同过滤算法、ECharts图形化分析)
  • JavaScript,发生异常,try...catch...finally处理,继续向上层调用者传递异常信息
  • zabbix“专家坐诊”第295期问答
  • 服务器无法访问公网的原因及解决方案
  • 在 WebSocket 中使用 @Autowired 时遇到空指针异常