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

leetcode162.寻找峰值

题目给出两个关键条件,为二分查找提供了基础:

  1. 边界条件nums[-1] = nums[n] = -∞(数组两端视为负无穷),确保数组中一定存在峰值(如递增数组的最后一个元素、递减数组的第一个元素)。
  2. 相邻元素不相等nums[i] != nums[i+1],避免了 “相等元素无法判断趋势” 的情况。

二分查找的核心逻辑:

  • 取中间元素 mid,比较 nums[mid] 与 nums[mid+1]
    • 若 nums[mid] < nums[mid+1]:右侧存在递增趋势,峰值一定在右侧(要么继续递增到末尾,要么中途下降形成峰值),因此收缩左边界 left = mid + 1
    • 若 nums[mid] > nums[mid+1]:左侧存在递减趋势,峰值一定在左侧(要么继续递减到开头,要么中途上升形成峰值),因此收缩右边界 right = mid
  • 重复上述过程,直到 left == right,此时 left(或 right)即为峰值索引。
class Solution {public int findPeakElement(int[] nums) {int left = 0, right = nums.length - 1;while (left < right) {int mid = left + (right - left) / 2;if (nums[mid] < nums[mid + 1]) {left = mid + 1;} else {right = mid;} }return left;}
}

http://www.xdnf.cn/news/20182.html

相关文章:

  • STM32 读写备份寄存器
  • VR红色教育基地+数字党建展厅+智慧校史馆
  • 网络安全防护——主动防护和被动防护
  • java程序员的爬虫技术
  • 研发文档更新滞后的常见原因与解决方法
  • 【大模型实战笔记 1】Prompt-Tuning方法
  • 【IO进程 共享内存、信号量集】
  • Redis AOF 持久化:银行的 “交易流水单” 管理逻辑
  • 从质疑到真香:小白使用「飞牛NAS」+「节点小宝」的花式操作
  • .NET 开发者的“Fiddler”:Titanium.Web.Proxy 库的强大魅力
  • 虚拟化安全:从逃逸漏洞到实战分析
  • Python快速入门专业版(三):print 格式化输出:% 占位符、format 方法与 f-string(谁更高效?)
  • vue+elementUI 进行表格行内新增及校验,同行其他输入框数据影响当前输入框校验结果
  • 【ComfyUI】涂鸦 ControlNet 涂鸦参考引导生成
  • django全国小米su7的行情查询系统(代码+数据库+LW)
  • 论文介绍:Fast3R,更快的多视图 3D 重建的新范式
  • 计算机原理(一)
  • 4.5.8版本来了~山海鲸最新内容抢鲜看
  • 2025 全国大学生数学建模竞赛题目-B 题 碳化硅外延层厚度的确定 问题二完整思路
  • Coze插件AI复刻之:网页截图
  • 数据结构准备:包装类+泛型
  • 大语言模型推理的幕后英雄:深入解析Prompt Processing工作机制
  • 时序数据库IoTDB的六大实用场景盘点
  • 基于机器学习的缓存准入策略研究
  • 服务器异常磁盘写排查手册 · 已删除文件句柄篇
  • 安装与配置Jenkins(小白的”升级打怪“成长之路)
  • AI-Agent智能体提示词工程使用分析
  • leetcode212.单词搜索II
  • SQL优化与准确性提升:基于RAG框架的智能SQL生成技术解析
  • webrtc之高通滤波——HighPassFilter源码及原理分析