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

【LeetCode题解】LeetCode 162. 寻找峰值

【题目链接】
162. 寻找峰值
【题目描述】
在这里插入图片描述
【题解】
峰值元素定义为严格大于左右相邻值的元素,且题目给定边界条件nums[−1]=nums[n]=−∞nums[-1] = nums[n] = -∞nums[1]=nums[n]=。这一条件至关重要:它保证了数组中至少存在一个峰值(即使数组严格递增,最后一个元素因右侧是−∞-∞成为峰值;严格递减则第一个元素因左侧是−∞-∞成为峰值)。

由于要求时间复杂度为O(logn)O(log n)O(logn),需用二分查找缩小区间。核心逻辑是:通过比较中间位置mmm和右侧邻居m+1m+1m+1的值,判断峰值的大致方向:

  • nums[m]>nums[m+1]nums[m] > nums[m+1]nums[m]>nums[m+1]
    说明mmm处于下坡段(或本身是峰值)。由于左侧边界是−∞-∞,从mmm向左必然存在一个峰值(即使左侧一直递减,最左端因左侧是−∞-∞也会成为峰值)。因此,缩小右边界到mmm
  • nums[m]<nums[m+1]nums[m] < nums[m+1]nums[m]<nums[m+1]
    说明mmm处于上坡段。由于右侧边界是−∞-∞,从m+1m+1m+1向右必然存在一个峰值(即使右侧一直递增,最右端因右侧是−∞-∞也会成为峰值)。因此,缩小左边界到m+1m+1m+1
    【AC代码】
class Solution {
public:int findPeakElement(vector<int>& nums) {int l = 0, r = nums.size() - 1;while(l < r) {int mid = l + r >> 1;if(nums[mid] > nums[mid + 1])r = mid;elsel = mid + 1;}return l;}
};

【思考&收获】
二分算法的两类模板需要熟练掌握,但核心关键在于设计合理的checkcheckcheck函数,它直接定义了“如何根据中间位置的特征,判断下一阶段的搜索方向”。由于每道题的场景逻辑不同,真正的破题点永远是 结合问题条件,分析区间的“可二分性”,而非机械套用模板。

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

相关文章:

  • SQL 语句进阶实战:从基础查询到性能优化全指南
  • Docker+Nginx+Node.js实战教程:从零搭建高可用的前后端分离项目
  • 黑客哲学之学习笔记系列(六)
  • Node.js完整安装配置指南(包含国内镜像配置)
  • HTB 赛季8靶场 - CodeTwo
  • HarmonyOS 实战:学会在鸿蒙中使用第三方 JavaScript 库(附完整 Demo)
  • 土地财政历史探寻
  • 陪诊系统开发哪家强?XK+支持 API对接+私有化部署,按需定制功能模块!
  • 涡流-信号完整性分析
  • 软件开发中的 8 个伦理问题示例
  • KMM跨平台叛逃实录:SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架(代码复用率85%)
  • MySQL事务篇-事务概念、并发事务问题、隔离级别
  • 微软AD国产化替换倒计时——不是选择题,而是生存题
  • 【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队
  • 《WASM驱动本地PDF与Excel预览组件的深度实践》
  • LeetCode 100 -- Day2
  • Leetcode 3654. Minimum Sum After Divisible Sum Deletions
  • C++小游戏NO.1游戏机
  • 【GNSS定位原理及算法杂记5】​​​​PPK(后处理动态定位)深度解析:后处理的艺术与 RTK 的互补
  • 【HarmonyOS】H5 实现在浏览器中正常跳转 AppLinking 至应用
  • HarmonyOS 中的 setInterval的基本使用
  • Android Coil 3拦截器Interceptor计算单次请求耗时,Kotlin
  • 进程通信:进程池的实现
  • Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
  • 【什么是非晶合金?非晶电机有什么优点?】
  • k8sday11服务发现(2/2)
  • Kubernetes 的 YAML 配置文件-kind
  • 在 Kotlin 中 使用泛型类和泛型函数
  • WRC大会精彩回顾 | NanoLoong机器人足球首秀青龙机械臂咖啡服务双线出击
  • 【论文阅读】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries