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

二分查找-162.寻找峰值-力扣(LeetCode)

一、题目解析

1.峰值元素是指其值严格大于左右相邻的元素

2.找到峰值元素并返回索引,如果包含多个峰值,返回任意一个峰值所在位置

3.时间复杂度为O(logN)

二、 算法原理

解法1:暴力解法

 图1表示nums[0]>nums[1],即第一个值就是峰值;图2表示在范围内的某一处出现nums[i]>nums[i+1],即找到峰值;图3表示在数组长度内没有找到nums[i]>nuns[i+1],即峰值为nums[nums.size()-1]

暴力解法即从第一个位置开始,一直向前走,分情况讨论;分析图3我们可以知道暴力解法的时间复杂为O(N),但由于数据长度只有1000,所以暴力解法也是可以通过的

解法2:二分查找

二段性

 细节问题

1.数据长度为1000,暴力解法也能通过

2.数据大小为[-2^31,2^31-1],所以在计算mid的时候可以用long long来存储数据

三、代码示例

解法1:

int findPeakElement(vector<int>& nums)//解法1{int n = nums.size();for(int i = 0;i<n-1;i++){if(nums[i]>nums[i+1]) return i;}return n-1;}

解法2:

int findPeakElement(vector<int>& nums)//解法2{int left = 0,right = nums.size()-1;while(left<right){long long mid = left + (right-left)/2;if(nums[mid]>nums[mid+1]) right = mid;else left = mid + 1;}return right;}

 

 

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

http://www.lryc.cn/news/596962.html

相关文章:

  • 思路探索:当大型语言模型遇见数据分析的现实挑战
  • 统一服务入口——Spring Cloud Gateway
  • 高亮匹配关键词样式highLightMatchString、replaceHTMLChar
  • Effective Python 第15条 不要过分依赖给字典添加条目时所用的顺序
  • CodeBuddy IDE实战:用AI全栈能力快速搭建课程表网页
  • JavaScript HTTP 请求:从老古董到新潮流
  • 在线深凹槽深检测方法都有哪些 —— 激光频率梳 3D 轮廓检测
  • 如何在Pico等Android头显中实现无人机低延迟RTMP全景巡检画面播放
  • 2025年7月份实时最新获取地图边界数据方法,省市区县街道多级联动【文末附实时geoJson数据下载】
  • 从零开始学习Dify-Excel数据可视化(四)
  • 无人机光伏巡检误检率↓78%!陌讯多模态融合算法实战解析
  • 【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换
  • Android用户鉴权实现方案深度分析
  • react18更新哪些东西
  • Nginx和Apache的区别
  • Apache PDFBox深入实践
  • Apache JMeter 使用记录踩坑
  • MCP客户端架构与实施
  • Apache POI 介绍与使用指南
  • apache-doris安装兼datax-web配置
  • LNMP-zblog分布式部署
  • 【Unity Shader】Special Effects(十二)Glow 外发光(UI)
  • Unity × RTMP × 头显设备:打造沉浸式工业远控视频系统的完整方案
  • 如何在macOS上修改iPhone的定位
  • ESP32的ADF详解:5. Streams的API
  • 聊聊 Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update 的问题
  • 在AI深度嵌入企业业务的当下——AI时代的融合数据库
  • Qt 菜单与工具栏设计:提升用户体验
  • AI产品经理面试宝典第48天:产品设计与用户体验优化策略
  • 【数学建模 | Matlab】二维绘图 和 三维绘图