当前位置: 首页 > 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.dtcms.com/a/294564.html

相关文章:

  • P1040 [NOIP 2003 提高组] 加分二叉树
  • 小米浏览器overflow不能左右滑动
  • spring-cloud概述
  • (Arxiv-2025)OVIS-U1技术报告
  • 想曰加密工具好用吗?本地安全、支持多算法的加密方案详解
  • NTC热敏电阻计算公式
  • 【大模型】Hugging Face常见模型格式详解
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-6,(知识点:二极管,少子多子,扩散/漂移运动)
  • mysql中ROW_NUMBER()、RANK()、DENSE_RANK()用法及区别
  • 在AI深度嵌入企业业务的当下——AI时代的融合数据库
  • 知己知彼:深入剖析跨站脚本(XSS)攻击与防御之道
  • React+Three.js实现3D场景压力/温度/密度分布可视化
  • 使用 piano_transcription_inference将钢琴录音转换为 MIDI
  • 2.4 PNIO-CM
  • 初级网安作业笔记3
  • opencv学习(视频读取)
  • Spring Data Redis 从入门到精通:原理与实战指南
  • 2025暑期—06神经网络-常见网络
  • JVM、Dalvik、ART区别
  • JS逆向实战案例之———x日头条【a-bogus】分析
  • 解析 Chromium 架构分层下 Windows 与 Linux 链接器行为差异及其影响
  • [深度学习] 大模型学习3下-模型训练与微调
  • 提升ARM Cortex-M系统性能的关键技术:TCM技术解析与实战指南
  • C++11扩展 --- 并发支持库(中)
  • sqlsuger 子表获取主表中的一个字段的写法
  • 第一章:Go语言基础入门之Go语言安装与环境配置
  • 顺丰面试提到的一个算法题
  • OpenAI发布ChatGPT Agent,AI智能体迎来关键变革
  • Git原理及使用
  • android studio打包vue