news 2026/4/23 13:05:20

day129—二分算法—寻找峰值Ⅱ(LeetCode-1901)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day129—二分算法—寻找峰值Ⅱ(LeetCode-1901)

题目描述

一个 2D 网格中的峰值是指那些严格大于其相邻格子(上、下、左、右)的元素。

给你一个从 0 开始编号m x n矩阵mat,其中任意两个相邻格子的值都不相同。找出任意一个 峰值mat[i][j]返回其位置[i,j]

你可以假设整个矩阵周边环绕着一圈值为-1的格子。

要求必须写出时间复杂度为O(m log(n))O(n log(m))的算法

示例 1:

输入:mat = [[1,4],[3,2]]输出:[0,1]解释:3 和 4 都是峰值,所以[1,0]和[0,1]都是可接受的答案。

示例 2:

输入:mat = [[10,20,15],[21,30,14],[7,16,32]]输出:[1,1]解释:30 和 32 都是峰值,所以[1,1]和[2,2]都是可接受的答案。

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 500
  • 1 <= mat[i][j] <= 105
  • 任意两个相邻元素均不相等.

解决方案:

这段代码的核心功能是在二维矩阵中找到任意一个峰值元素的坐标(峰值定义为大于其上下左右相邻元素,边界元素只需大于所有存在的相邻元素),采用「行维度二分查找 + 每行找最大值」的策略,时间复杂度为O(m log n)m为列数,n为行数),是高效的二维峰值查找解法。

核心逻辑

代码利用二维峰值的特性 —— 若某行的最大值小于其下一行同列元素,则峰值必在下方行;反之则峰值必在当前行或上方行,以此缩进行范围:

  1. 行维度二分:初始化开区间(left=-1, right=行数-1),循环缩小区间(条件left+1<right);
  2. 每行定位最大值:对二分中点行mid,找到该行最大值的列索引j(这个位置是该行内最可能成为峰值的点);
  3. 缩进行范围:比较mat[mid][j]mat[mid+1][j]:若当前行最大值更大,说明峰值在mid及上方行,将right=mid;否则峰值在mid下方行,将left=mid
  4. 确定结果:循环结束时right指向峰值所在行,找到该行最大值的列索引,组合成坐标返回。

总结

  1. 核心思路:将二维峰值查找简化为「行维度二分 + 每行找最大值」,把二维问题降维为一维二分问题;
  2. 关键设计:利用 “每行最大值” 缩小列范围,再通过二分缩小行范围,开区间二分法简化边界处理;
  3. 效率保障:每行找最大值是O(m),行二分是O(log n),整体效率远优于暴力遍历所有元素。

函数源码:

class Solution { public: int indexOfMax(vector<int>& a) {//这一行内最大值的索引 return ranges::max_element(a) - a.begin(); } vector<int> findPeakGrid(vector<vector<int>> &mat) { int left = -1, right = mat.size() - 1; while (left + 1 < right) { int mid = left + (right - left) / 2; int j = indexOfMax(mat[mid]); (mat[mid][j] > mat[mid + 1][j] ? right : left) = mid; } return {right, indexOfMax(mat[right])}; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:29:38

LightVAE:视频生成提速省内存的AI新突破

LightVAE&#xff1a;视频生成提速省内存的AI新突破 【免费下载链接】Autoencoders 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Autoencoders 导语&#xff1a;LightVAE系列通过架构优化与知识蒸馏技术&#xff0c;在保持接近官方模型画质的同时&#xff0…

作者头像 李华
网站建设 2026/4/23 11:28:43

HiDream-E1.1:免费AI图像编辑工具,9项指标第一

HiDream-E1.1&#xff1a;免费AI图像编辑工具&#xff0c;9项指标第一 【免费下载链接】HiDream-E1-1 项目地址: https://ai.gitcode.com/hf_mirrors/HiDream-ai/HiDream-E1-1 导语&#xff1a;HiDream-E1.1开源图像编辑模型在权威评测中横扫9项指标冠军&#xff0c;以…

作者头像 李华
网站建设 2026/4/22 19:02:18

Vue图片裁剪组件vue-cropperjs终极使用指南

Vue图片裁剪组件vue-cropperjs终极使用指南 【免费下载链接】vue-cropperjs A Vue wrapper component for cropperjs https://github.com/fengyuanchen/cropperjs 项目地址: https://gitcode.com/gh_mirrors/vu/vue-cropperjs 在现代Web开发中&#xff0c;图片处理已成为…

作者头像 李华
网站建设 2026/3/19 20:23:13

DCT-Net创意工坊:与Stable Diffusion联动的艺术风格融合实验

DCT-Net创意工坊&#xff1a;与Stable Diffusion联动的艺术风格融合实验 你有没有想过&#xff0c;把自己的照片变成动漫角色&#xff1f;或者让一张写实人像瞬间拥有手绘水彩的质感&#xff1f;现在&#xff0c;借助AI技术&#xff0c;这一切不仅可能&#xff0c;而且越来越简…

作者头像 李华
网站建设 2026/4/23 10:49:36

Wan2.1图像转视频:4步极速生成黑科技

Wan2.1图像转视频&#xff1a;4步极速生成黑科技 【免费下载链接】Wan2.1-I2V-14B-480P-StepDistill-CfgDistill-Lightx2v 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Wan2.1-I2V-14B-480P-StepDistill-CfgDistill-Lightx2v 导语&#xff1a;AI视频生成领域…

作者头像 李华
网站建设 2026/4/23 10:45:44

Spotify音乐下载完整指南:3步打造个人离线音乐库

Spotify音乐下载完整指南&#xff1a;3步打造个人离线音乐库 【免费下载链接】spotify-downloader Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found). 项目地址: https://gitcode.com/gh_mirrors/spotifydo…

作者头像 李华